feat: hive setup data model and API (Beute L1)
Backend Image / build-and-push (push) Successful in 5m5s
Frontend Image / build-and-push (push) Successful in 11m2s

Each colony can now hold its hive setup (Ist-Zustand) as validated
JSON with an append-only change log:

- catalog: hive systems and part types with dimensions, placement
  rules and state fields; Liebig-Zander 10 seeded with fixed ids
  (owner's equipment incl. Bausperre, Futterzarge, Nassenheider)
- pure domain module (operations, validator, derived facts) with
  shared JSON fixtures the frontend runs too
- API: catalog (hive-systems:manage), setup create/change/history/
  state at a day (colonies:read/update), 409 HIVE_CONFLICT with the
  current state, idempotent writes, HiveChanged event
- inspections can carry hive ops saved in the same transaction
- backup export/import of the new tables (backup wins per colony)
- docs: ARCHITECTURE section 13, Annahmen 95-100

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
Nick SzaunigandClaude Opus 5.5 committed 2026-10-15 21:23:23 +02:00
1 parent 8982d0796a
commit b48fb157c8
141 files changed
+15211 -17

No files matched your search

@@ -0,0 +1,146 @@
{
"name": "addPart inserts at index",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addPart",
"part": {
"id": "q1",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
"at": 2
}
],
"expect": {
"ok": true,
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "q1",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
}
}
}
@@ -0,0 +1,136 @@
{
"name": "addPart at beyond end is clamped to end",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
}
]
},
"ops": [
{
"op": "addPart",
"part": {
"id": "q1",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
"at": 99
}
],
"expect": {
"ok": true,
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "q1",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
}
]
}
}
}
@@ -0,0 +1,136 @@
{
"name": "addPart box brings its own frames",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addPart",
"part": {
"id": "b2",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "EMPTY_COMB"
},
{
"slot": 2,
"type": "EMPTY_COMB"
},
{
"slot": 3,
"type": "EMPTY_COMB"
},
{
"slot": 4,
"type": "EMPTY_COMB"
},
{
"slot": 5,
"type": "EMPTY_COMB"
},
{
"slot": 6,
"type": "EMPTY_COMB"
},
{
"slot": 7,
"type": "EMPTY_COMB"
},
{
"slot": 8,
"type": "EMPTY_COMB"
},
{
"slot": 9,
"type": "EMPTY_COMB"
},
{
"slot": 10,
"type": "EMPTY_COMB"
}
]
},
"at": 1
}
],
"expect": {
"ok": true,
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b2",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "EMPTY_COMB"
},
{
"slot": 2,
"type": "EMPTY_COMB"
},
{
"slot": 3,
"type": "EMPTY_COMB"
},
{
"slot": 4,
"type": "EMPTY_COMB"
},
{
"slot": 5,
"type": "EMPTY_COMB"
},
{
"slot": 6,
"type": "EMPTY_COMB"
},
{
"slot": 7,
"type": "EMPTY_COMB"
},
{
"slot": 8,
"type": "EMPTY_COMB"
},
{
"slot": 9,
"type": "EMPTY_COMB"
},
{
"slot": 10,
"type": "EMPTY_COMB"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
}
}
}
@@ -0,0 +1,148 @@
{
"name": "addInsert floor insert into floor",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addInsert",
"hostId": "f1",
"part": {
"id": "fi1",
"partTypeId": "hive-part-zl10-floor-insert",
"state": {}
}
}
],
"expect": {
"ok": true,
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {},
"inserts": [
{
"id": "fi1",
"partTypeId": "hive-part-zl10-floor-insert",
"state": {}
}
]
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
}
}
}
@@ -0,0 +1,70 @@
{
"name": "addInsert evaporator into empty box",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "e1",
"partTypeId": "hive-part-zl10-box-empty",
"state": {},
"frames": []
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addInsert",
"hostId": "e1",
"part": {
"id": "ev1",
"partTypeId": "hive-part-zl10-evaporator",
"state": {
"acidMl": 250
}
}
}
],
"expect": {
"ok": true,
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "e1",
"partTypeId": "hive-part-zl10-box-empty",
"state": {},
"frames": [],
"inserts": [
{
"id": "ev1",
"partTypeId": "hive-part-zl10-evaporator",
"state": {
"acidMl": 250
}
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
}
}
}
@@ -0,0 +1,89 @@
{
"name": "removePart removes a stack part",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "removePart",
"id": "b1"
}
],
"expect": {
"ok": true,
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
}
}
}
@@ -0,0 +1,143 @@
{
"name": "removePart removes an insert",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {},
"inserts": [
{
"id": "fi1",
"partTypeId": "hive-part-zl10-floor-insert",
"state": {}
}
]
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "removePart",
"id": "fi1"
}
],
"expect": {
"ok": true,
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
}
}
}
@@ -0,0 +1,231 @@
{
"name": "movePart moves within the stack",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "b2",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "movePart",
"id": "b2",
"to": 1
}
],
"expect": {
"ok": true,
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b2",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
}
}
}
@@ -0,0 +1,137 @@
{
"name": "movePart target beyond end is clamped",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "q1",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
}
]
},
"ops": [
{
"op": "movePart",
"id": "b1",
"to": 50
}
],
"expect": {
"ok": true,
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "q1",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
}
]
}
}
}
@@ -0,0 +1,56 @@
{
"name": "setState sets a level",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "fd1",
"partTypeId": "hive-part-zl10-feeder",
"state": {}
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setState",
"id": "fd1",
"key": "syrupLiters",
"value": 2.5
}
],
"expect": {
"ok": true,
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "fd1",
"partTypeId": "hive-part-zl10-feeder",
"state": {
"syrupLiters": 2.5
}
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
}
}
}
@@ -0,0 +1,140 @@
{
"name": "setState sets a choice",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setState",
"id": "f1",
"key": "entrance",
"value": "NARROW"
}
],
"expect": {
"ok": true,
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {
"entrance": "NARROW"
}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
}
}
}
@@ -0,0 +1,63 @@
{
"name": "setState accepts the level maximum",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "fd1",
"partTypeId": "hive-part-zl10-feeder",
"state": {}
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setState",
"id": "fd1",
"key": "syrupLiters",
"value": 3
},
{
"op": "setState",
"id": "fd1",
"key": "fondantKg",
"value": 2.5
}
],
"expect": {
"ok": true,
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "fd1",
"partTypeId": "hive-part-zl10-feeder",
"state": {
"syrupLiters": 3,
"fondantKg": 2.5
}
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
}
}
}
@@ -0,0 +1,72 @@
{
"name": "setState on an insert",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "e1",
"partTypeId": "hive-part-zl10-box-empty",
"state": {},
"frames": [],
"inserts": [
{
"id": "ev1",
"partTypeId": "hive-part-zl10-evaporator",
"state": {}
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setState",
"id": "ev1",
"key": "acidMl",
"value": 290
}
],
"expect": {
"ok": true,
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "e1",
"partTypeId": "hive-part-zl10-box-empty",
"state": {},
"frames": [],
"inserts": [
{
"id": "ev1",
"partTypeId": "hive-part-zl10-evaporator",
"state": {
"acidMl": 290
}
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
}
}
}
@@ -0,0 +1,140 @@
{
"name": "setFrame sets type and name",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setFrame",
"boxId": "b1",
"slot": 3,
"type": "BROOD",
"name": "Königin"
}
],
"expect": {
"ok": true,
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "BROOD",
"name": "Königin"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
}
}
}
@@ -0,0 +1,140 @@
{
"name": "setFrame with null name removes the name",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "BROOD",
"name": "x"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setFrame",
"boxId": "b1",
"slot": 3,
"type": "HONEY",
"name": null
}
],
"expect": {
"ok": true,
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "HONEY"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
}
}
}
@@ -0,0 +1,178 @@
{
"name": "setFrames replaces all frames",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setFrames",
"boxId": "b1",
"frames": [
{
"slot": 1,
"type": "BROOD"
},
{
"slot": 2,
"type": "BROOD"
},
{
"slot": 3,
"type": "BROOD"
},
{
"slot": 4,
"type": "BROOD"
},
{
"slot": 5,
"type": "BROOD"
},
{
"slot": 6,
"type": "BROOD"
},
{
"slot": 7,
"type": "BROOD"
},
{
"slot": 8,
"type": "BROOD"
},
{
"slot": 9,
"type": "BROOD"
},
{
"slot": 10,
"type": "BROOD"
}
]
}
],
"expect": {
"ok": true,
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "BROOD"
},
{
"slot": 2,
"type": "BROOD"
},
{
"slot": 3,
"type": "BROOD"
},
{
"slot": 4,
"type": "BROOD"
},
{
"slot": 5,
"type": "BROOD"
},
{
"slot": 6,
"type": "BROOD"
},
{
"slot": 7,
"type": "BROOD"
},
{
"slot": 8,
"type": "BROOD"
},
{
"slot": 9,
"type": "BROOD"
},
{
"slot": 10,
"type": "BROOD"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
}
}
}
@@ -0,0 +1,148 @@
{
"name": "setLabel sets and clears a label",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setLabel",
"id": "b1",
"label": "Honigraum 1"
},
{
"op": "setLabel",
"id": "f1",
"label": "Boden"
},
{
"op": "setLabel",
"id": "b1",
"label": null
}
],
"expect": {
"ok": true,
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {},
"label": "Boden"
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
}
}
}
@@ -0,0 +1,146 @@
{
"name": "multiple ops apply in order",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
}
]
},
"ops": [
{
"op": "addPart",
"part": {
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
"at": 1
},
{
"op": "addPart",
"part": {
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
},
"at": 2
},
{
"op": "setFrame",
"boxId": "b1",
"slot": 1,
"type": "POLLEN"
}
],
"expect": {
"ok": true,
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "POLLEN"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
}
}
}
@@ -0,0 +1,131 @@
{
"name": "empty ops return the state unchanged",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [],
"expect": {
"ok": true,
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
}
}
}
@@ -0,0 +1,141 @@
{
"name": "existing parts with an inactive part type stay valid",
"inactivePartTypeIds": [
"hive-part-zl10-roof"
],
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setLabel",
"id": "r1",
"label": "Dach"
}
],
"expect": {
"ok": true,
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {},
"label": "Dach"
}
]
}
}
}
@@ -0,0 +1,76 @@
{
"name": "removing the floor fails",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "removePart",
"id": "f1"
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "RULE_FLOOR_BOTTOM"
}
}
@@ -0,0 +1,81 @@
{
"name": "second floor fails",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addPart",
"part": {
"id": "f2",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
"at": 1
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "RULE_FLOOR_BOTTOM"
}
}
@@ -0,0 +1,81 @@
{
"name": "part below the floor fails",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addPart",
"part": {
"id": "q1",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
"at": 0
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "RULE_FLOOR_BOTTOM"
}
}
@@ -0,0 +1,81 @@
{
"name": "negative at is clamped to 0 and then fails the floor rule",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addPart",
"part": {
"id": "q1",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
"at": -7
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "RULE_FLOOR_BOTTOM"
}
}
@@ -0,0 +1,81 @@
{
"name": "part above the roof fails",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addPart",
"part": {
"id": "q1",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
"at": 3
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "RULE_ROOF_TOP"
}
}
@@ -0,0 +1,81 @@
{
"name": "at beyond the end is clamped and fails the roof rule",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addPart",
"part": {
"id": "q1",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
"at": 99
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "RULE_ROOF_TOP"
}
}
@@ -0,0 +1,81 @@
{
"name": "second roof fails",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addPart",
"part": {
"id": "r2",
"partTypeId": "hive-part-zl10-roof",
"state": {}
},
"at": 3
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "RULE_ROOF_TOP"
}
}
@@ -0,0 +1,81 @@
{
"name": "floor insert cannot sit in the stack",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addPart",
"part": {
"id": "fi1",
"partTypeId": "hive-part-zl10-floor-insert",
"state": {}
},
"at": 1
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "RULE_INSERT_HOST"
}
}
@@ -0,0 +1,81 @@
{
"name": "evaporator cannot sit in the stack",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addPart",
"part": {
"id": "ev1",
"partTypeId": "hive-part-zl10-evaporator",
"state": {}
},
"at": 1
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "RULE_INSERT_HOST"
}
}
@@ -0,0 +1,81 @@
{
"name": "evaporator cannot go into a floor",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addInsert",
"hostId": "f1",
"part": {
"id": "ev1",
"partTypeId": "hive-part-zl10-evaporator",
"state": {}
}
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "RULE_INSERT_HOST"
}
}
@@ -0,0 +1,81 @@
{
"name": "floor insert cannot go into a box",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addInsert",
"hostId": "b1",
"part": {
"id": "fi1",
"partTypeId": "hive-part-zl10-floor-insert",
"state": {}
}
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "RULE_INSERT_HOST"
}
}
@@ -0,0 +1,81 @@
{
"name": "feeder cannot be an insert",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addInsert",
"hostId": "b1",
"part": {
"id": "fd1",
"partTypeId": "hive-part-zl10-feeder",
"state": {}
}
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "RULE_INSERT_HOST"
}
}
@@ -0,0 +1,88 @@
{
"name": "only one floor insert per floor",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {},
"inserts": [
{
"id": "fi1",
"partTypeId": "hive-part-zl10-floor-insert",
"state": {}
}
]
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addInsert",
"hostId": "f1",
"part": {
"id": "fi2",
"partTypeId": "hive-part-zl10-floor-insert",
"state": {}
}
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "RULE_INSERT_LIMIT"
}
}
@@ -0,0 +1,47 @@
{
"name": "only one evaporator per box",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "e1",
"partTypeId": "hive-part-zl10-box-empty",
"state": {},
"frames": [],
"inserts": [
{
"id": "ev1",
"partTypeId": "hive-part-zl10-evaporator",
"state": {}
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addInsert",
"hostId": "e1",
"part": {
"id": "ev2",
"partTypeId": "hive-part-zl10-evaporator",
"state": {}
}
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "RULE_INSERT_LIMIT"
}
}
@@ -0,0 +1,84 @@
{
"name": "movePart cannot move an insert",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {},
"inserts": [
{
"id": "fi1",
"partTypeId": "hive-part-zl10-floor-insert",
"state": {}
}
]
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "movePart",
"id": "fi1",
"to": 1
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "RULE_INSERT_HOST"
}
}
@@ -0,0 +1,77 @@
{
"name": "movePart past the roof fails the roof rule",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "movePart",
"id": "b1",
"to": 99
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "RULE_ROOF_TOP"
}
}
@@ -0,0 +1,78 @@
{
"name": "setState with unknown key",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setState",
"id": "f1",
"key": "nope",
"value": 1
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "STATE_UNKNOWN_KEY"
}
}
@@ -0,0 +1,36 @@
{
"name": "setState level above max",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "fd1",
"partTypeId": "hive-part-zl10-feeder",
"state": {}
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setState",
"id": "fd1",
"key": "syrupLiters",
"value": 3.5
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "STATE_OUT_OF_RANGE"
}
}
@@ -0,0 +1,36 @@
{
"name": "setState level below zero",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "fd1",
"partTypeId": "hive-part-zl10-feeder",
"state": {}
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setState",
"id": "fd1",
"key": "syrupLiters",
"value": -0.5
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "STATE_OUT_OF_RANGE"
}
}
@@ -0,0 +1,36 @@
{
"name": "setState level off step",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "fd1",
"partTypeId": "hive-part-zl10-feeder",
"state": {}
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setState",
"id": "fd1",
"key": "syrupLiters",
"value": 0.3
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "STATE_STEP"
}
}
@@ -0,0 +1,44 @@
{
"name": "setState evaporator off step of 10",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "e1",
"partTypeId": "hive-part-zl10-box-empty",
"state": {},
"frames": [],
"inserts": [
{
"id": "ev1",
"partTypeId": "hive-part-zl10-evaporator",
"state": {}
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setState",
"id": "ev1",
"key": "acidMl",
"value": 255
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "STATE_STEP"
}
}
@@ -0,0 +1,78 @@
{
"name": "setState choice not in options",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setState",
"id": "f1",
"key": "entrance",
"value": "HALF"
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "STATE_OUT_OF_RANGE"
}
}
@@ -0,0 +1,36 @@
{
"name": "setState string on a level",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "fd1",
"partTypeId": "hive-part-zl10-feeder",
"state": {}
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setState",
"id": "fd1",
"key": "syrupLiters",
"value": "2"
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "STATE_OUT_OF_RANGE"
}
}
@@ -0,0 +1,78 @@
{
"name": "setState number on a choice",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setState",
"id": "f1",
"key": "entrance",
"value": 1
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "STATE_OUT_OF_RANGE"
}
}
@@ -0,0 +1,78 @@
{
"name": "setState on missing id",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setState",
"id": "zzz",
"key": "entrance",
"value": "OPEN"
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "MISSING_ID"
}
}
@@ -0,0 +1,83 @@
{
"name": "addPart with unknown state key",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addPart",
"part": {
"id": "q1",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {
"foo": 1
}
},
"at": 2
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "STATE_UNKNOWN_KEY"
}
}
@@ -0,0 +1,114 @@
{
"name": "setFrames with too few frames",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setFrames",
"boxId": "b1",
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
}
]
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "FRAMES_LENGTH"
}
}
@@ -0,0 +1,122 @@
{
"name": "setFrames with too many frames",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setFrames",
"boxId": "b1",
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
},
{
"slot": 11,
"type": "FOUNDATION"
}
]
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "FRAMES_LENGTH"
}
}
@@ -0,0 +1,118 @@
{
"name": "setFrames with wrong slot numbers",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setFrames",
"boxId": "b1",
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 1,
"type": "FOUNDATION"
}
]
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "FRAMES_LENGTH"
}
}
@@ -0,0 +1,78 @@
{
"name": "setFrame slot above frameSlots",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setFrame",
"boxId": "b1",
"slot": 11,
"type": "BROOD"
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "FRAMES_LENGTH"
}
}
@@ -0,0 +1,78 @@
{
"name": "setFrame slot zero",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setFrame",
"boxId": "b1",
"slot": 0,
"type": "BROOD"
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "FRAMES_LENGTH"
}
}
@@ -0,0 +1,78 @@
{
"name": "setFrame on a non-box",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setFrame",
"boxId": "f1",
"slot": 1,
"type": "BROOD"
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "FRAMES_LENGTH"
}
}
@@ -0,0 +1,37 @@
{
"name": "setFrame on a box with zero slots",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "e1",
"partTypeId": "hive-part-zl10-box-empty",
"state": {},
"frames": []
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setFrame",
"boxId": "e1",
"slot": 1,
"type": "BROOD"
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "FRAMES_LENGTH"
}
}
@@ -0,0 +1,78 @@
{
"name": "setFrame with unknown frame type",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setFrame",
"boxId": "b1",
"slot": 1,
"type": "GOLD"
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "STATE_OUT_OF_RANGE"
}
}
@@ -0,0 +1,68 @@
{
"name": "addPart box with wrong frame count",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addPart",
"part": {
"id": "b2",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
}
]
},
"at": 1
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "FRAMES_LENGTH"
}
}
@@ -0,0 +1,34 @@
{
"name": "addPart box without frames",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addPart",
"part": {
"id": "b2",
"partTypeId": "hive-part-zl10-box-10",
"state": {}
},
"at": 1
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "FRAMES_LENGTH"
}
}
@@ -0,0 +1,87 @@
{
"name": "frames on a non-box part",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addPart",
"part": {
"id": "q1",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
}
]
},
"at": 2
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "FRAMES_LENGTH"
}
}
@@ -0,0 +1,174 @@
{
"name": "the 31st part in the stack fails",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "q0",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q1",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q2",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q3",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q4",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q5",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q6",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q7",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q8",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q9",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q10",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q11",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q12",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q13",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q14",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q15",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q16",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q17",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q18",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q19",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q20",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q21",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q22",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q23",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q24",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q25",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q26",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q27",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q28",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
}
]
},
"ops": [
{
"op": "addPart",
"part": {
"id": "q99",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
"at": 30
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "LIMIT_PARTS"
}
}
@@ -0,0 +1,322 @@
{
"name": "a stack of 30 parts is allowed",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "q0",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q1",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q2",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q3",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q4",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q5",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q6",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q7",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q8",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q9",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q10",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q11",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q12",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q13",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q14",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q15",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q16",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q17",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q18",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q19",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q20",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q21",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q22",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q23",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q24",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q25",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q26",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q27",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
}
]
},
"ops": [
{
"op": "addPart",
"part": {
"id": "q28",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
"at": 29
}
],
"expect": {
"ok": true,
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "q0",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q1",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q2",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q3",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q4",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q5",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q6",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q7",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q8",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q9",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q10",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q11",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q12",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q13",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q14",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q15",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q16",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q17",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q18",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q19",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q20",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q21",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q22",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q23",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q24",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q25",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q26",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q27",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
{
"id": "q28",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
}
]
}
}
}
@@ -0,0 +1,77 @@
{
"name": "label of 41 characters",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setLabel",
"id": "b1",
"label": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "LIMIT_TEXT"
}
}
@@ -0,0 +1,138 @@
{
"name": "label of 40 characters",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setLabel",
"id": "b1",
"label": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
],
"expect": {
"ok": true,
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
],
"label": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
}
}
}
@@ -0,0 +1,79 @@
{
"name": "frame name of 41 characters",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setFrame",
"boxId": "b1",
"slot": 1,
"type": "BROOD",
"name": "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "LIMIT_TEXT"
}
}
@@ -0,0 +1,577 @@
{
"name": "more than 100 ops",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
}
],
"expect": {
"ok": false,
"opIndex": 100,
"reasonCode": "LIMIT_OPS"
}
}
@@ -0,0 +1,633 @@
{
"name": "exactly 100 ops",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
},
{
"op": "setLabel",
"id": "b1",
"label": "a"
}
],
"expect": {
"ok": true,
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
],
"label": "a"
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
}
}
}
@@ -0,0 +1,81 @@
{
"name": "duplicate id on addPart",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addPart",
"part": {
"id": "b1",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
"at": 2
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "DUPLICATE_ID"
}
}
@@ -0,0 +1,81 @@
{
"name": "duplicate id between insert and stack part",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addInsert",
"hostId": "f1",
"part": {
"id": "b1",
"partTypeId": "hive-part-zl10-floor-insert",
"state": {}
}
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "DUPLICATE_ID"
}
}
@@ -0,0 +1,81 @@
{
"name": "addPart with empty id",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addPart",
"part": {
"id": "",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
"at": 2
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "MISSING_ID"
}
}
@@ -0,0 +1,76 @@
{
"name": "removePart with missing id",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "removePart",
"id": "zzz"
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "MISSING_ID"
}
}
@@ -0,0 +1,77 @@
{
"name": "movePart with missing id",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "movePart",
"id": "zzz",
"to": 1
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "MISSING_ID"
}
}
@@ -0,0 +1,77 @@
{
"name": "setLabel with missing id",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setLabel",
"id": "zzz",
"label": "a"
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "MISSING_ID"
}
}
@@ -0,0 +1,81 @@
{
"name": "addInsert with missing host",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addInsert",
"hostId": "zzz",
"part": {
"id": "fi1",
"partTypeId": "hive-part-zl10-floor-insert",
"state": {}
}
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "MISSING_ID"
}
}
@@ -0,0 +1,78 @@
{
"name": "setFrame with missing box",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setFrame",
"boxId": "zzz",
"slot": 1,
"type": "BROOD"
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "MISSING_ID"
}
}
@@ -0,0 +1,81 @@
{
"name": "foreign part type",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addPart",
"part": {
"id": "x1",
"partTypeId": "hive-part-other-system-box",
"state": {}
},
"at": 2
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "FOREIGN_PART_TYPE"
}
}
@@ -0,0 +1,84 @@
{
"name": "inactive part type on addPart",
"inactivePartTypeIds": [
"hive-part-zl10-queen-excluder"
],
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addPart",
"part": {
"id": "q1",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {}
},
"at": 2
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "INACTIVE_PART_TYPE"
}
}
@@ -0,0 +1,84 @@
{
"name": "inactive part type on addInsert",
"inactivePartTypeIds": [
"hive-part-zl10-floor-insert"
],
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addInsert",
"hostId": "f1",
"part": {
"id": "fi1",
"partTypeId": "hive-part-zl10-floor-insert",
"state": {}
}
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "INACTIVE_PART_TYPE"
}
}
@@ -0,0 +1,86 @@
{
"name": "failing op index is reported",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setLabel",
"id": "b1",
"label": "ok"
},
{
"op": "removePart",
"id": "zzz"
},
{
"op": "setLabel",
"id": "b1",
"label": "never"
}
],
"expect": {
"ok": false,
"opIndex": 1,
"reasonCode": "MISSING_ID"
}
}
@@ -0,0 +1,76 @@
{
"name": "unknown op",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "explode",
"id": "b1"
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "UNKNOWN_OP"
}
}
@@ -0,0 +1,140 @@
{
"name": "setFrame without name keeps an existing name",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "BROOD",
"name": "Königin"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setFrame",
"boxId": "b1",
"slot": 3,
"type": "HONEY"
}
],
"expect": {
"ok": true,
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "HONEY",
"name": "Königin"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
}
}
}
@@ -0,0 +1,138 @@
{
"name": "setFrame without name on an unnamed frame stays unnamed",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setFrame",
"boxId": "b1",
"slot": 2,
"type": "HONEY"
}
],
"expect": {
"ok": true,
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "HONEY"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
}
}
}
@@ -0,0 +1,56 @@
{
"name": "setState accepts a value within the 1e-9 step tolerance",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "fd1",
"partTypeId": "hive-part-zl10-feeder",
"state": {}
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setState",
"id": "fd1",
"key": "syrupLiters",
"value": 2.5000000001
}
],
"expect": {
"ok": true,
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "fd1",
"partTypeId": "hive-part-zl10-feeder",
"state": {
"syrupLiters": 2.5000000001
}
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
}
}
}
@@ -0,0 +1,36 @@
{
"name": "setState rejects a value just beyond the step tolerance",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "fd1",
"partTypeId": "hive-part-zl10-feeder",
"state": {}
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setState",
"id": "fd1",
"key": "syrupLiters",
"value": 2.500001
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "STATE_STEP"
}
}
@@ -0,0 +1,77 @@
{
"name": "setLabel with a non-string label",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setLabel",
"id": "b1",
"label": 5
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "STATE_OUT_OF_RANGE"
}
}
@@ -0,0 +1,79 @@
{
"name": "setFrame with a non-string name",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setFrame",
"boxId": "b1",
"slot": 1,
"type": "BROOD",
"name": 5
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "STATE_OUT_OF_RANGE"
}
}
@@ -0,0 +1,137 @@
{
"name": "addPart normalises an empty inserts array away",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addPart",
"part": {
"id": "b2",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
],
"inserts": []
},
"at": 1
}
],
"expect": {
"ok": true,
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b2",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
}
}
}
@@ -0,0 +1,145 @@
{
"name": "addInsert then removePart leaves no empty inserts array",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addInsert",
"hostId": "f1",
"part": {
"id": "fi1",
"partTypeId": "hive-part-zl10-floor-insert",
"state": {}
}
},
{
"op": "removePart",
"id": "fi1"
}
],
"expect": {
"ok": true,
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
}
}
}
@@ -0,0 +1,78 @@
{
"name": "unknown key on the state root",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
],
"extra": 1
},
"ops": [
{
"op": "setLabel",
"id": "b1",
"label": "a"
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "UNKNOWN_FIELD"
}
}
@@ -0,0 +1,82 @@
{
"name": "unknown key on a part",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addPart",
"part": {
"id": "q1",
"partTypeId": "hive-part-zl10-queen-excluder",
"state": {},
"extra": 1
},
"at": 2
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "UNKNOWN_FIELD"
}
}
@@ -0,0 +1,82 @@
{
"name": "unknown key on an insert",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "addInsert",
"hostId": "f1",
"part": {
"id": "fi1",
"partTypeId": "hive-part-zl10-floor-insert",
"state": {},
"extra": 1
}
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "UNKNOWN_FIELD"
}
}
@@ -0,0 +1,128 @@
{
"name": "unknown key on a frame",
"state": {
"schemaVersion": 1,
"stack": [
{
"id": "f1",
"partTypeId": "hive-part-zl10-floor",
"state": {}
},
{
"id": "b1",
"partTypeId": "hive-part-zl10-box-10",
"state": {},
"frames": [
{
"slot": 1,
"type": "FOUNDATION"
},
{
"slot": 2,
"type": "FOUNDATION"
},
{
"slot": 3,
"type": "FOUNDATION"
},
{
"slot": 4,
"type": "FOUNDATION"
},
{
"slot": 5,
"type": "FOUNDATION"
},
{
"slot": 6,
"type": "FOUNDATION"
},
{
"slot": 7,
"type": "FOUNDATION"
},
{
"slot": 8,
"type": "FOUNDATION"
},
{
"slot": 9,
"type": "FOUNDATION"
},
{
"slot": 10,
"type": "FOUNDATION"
}
]
},
{
"id": "r1",
"partTypeId": "hive-part-zl10-roof",
"state": {}
}
]
},
"ops": [
{
"op": "setFrames",
"boxId": "b1",
"frames": [
{
"slot": 1,
"type": "FOUNDATION",
"extra": 1
},
{
"slot": 2,
"type": "FOUNDATION",
"extra": 1
},
{
"slot": 3,
"type": "FOUNDATION",
"extra": 1
},
{
"slot": 4,
"type": "FOUNDATION",
"extra": 1
},
{
"slot": 5,
"type": "FOUNDATION",
"extra": 1
},
{
"slot": 6,
"type": "FOUNDATION",
"extra": 1
},
{
"slot": 7,
"type": "FOUNDATION",
"extra": 1
},
{
"slot": 8,
"type": "FOUNDATION",
"extra": 1
},
{
"slot": 9,
"type": "FOUNDATION",
"extra": 1
},
{
"slot": 10,
"type": "FOUNDATION",
"extra": 1
}
]
}
],
"expect": {
"ok": false,
"opIndex": 0,
"reasonCode": "UNKNOWN_FIELD"
}
}
+246
View File
@@ -0,0 +1,246 @@
{
"systemId": "hive-system-zander-liebig-10",
"partTypes": [
{
"id": "hive-part-zl10-floor",
"kind": "FLOOR",
"name": "Liebig Wanderboden",
"lengthMm": 525,
"widthMm": 430,
"heightMm": 120,
"frameSlots": null,
"stateSchema": [
{
"key": "entrance",
"label": "Flugloch",
"kind": "choice",
"options": [
"OPEN",
"NARROW",
"CLOSED"
],
"optionLabels": [
"offen",
"eng",
"zu"
]
},
{
"key": "varroaTray",
"label": "Varroa-Schublade",
"kind": "choice",
"options": [
"IN",
"OUT"
],
"optionLabels": [
"drin",
"draußen"
]
}
],
"active": true
},
{
"id": "hive-part-zl10-floor-insert",
"kind": "FLOOR_INSERT",
"name": "Liebig Bausperre",
"lengthMm": 475,
"widthMm": 375,
"heightMm": 5,
"frameSlots": null,
"stateSchema": [],
"active": true
},
{
"id": "hive-part-zl10-box-10",
"kind": "BOX",
"name": "Liebig Zander Ganzzarge, 10 Rähmchen",
"lengthMm": 525,
"widthMm": 430,
"heightMm": 230,
"frameSlots": 10,
"stateSchema": [],
"active": true
},
{
"id": "hive-part-zl10-box-empty",
"kind": "BOX",
"name": "Leerzarge (Liebig Zander Ganzzarge ohne Rähmchen)",
"lengthMm": 525,
"widthMm": 430,
"heightMm": 230,
"frameSlots": 0,
"stateSchema": [],
"active": true
},
{
"id": "hive-part-zl10-divider-board",
"kind": "DIVIDER_BOARD",
"name": "Liebig Zwischenboden",
"lengthMm": 525,
"widthMm": 430,
"heightMm": 50,
"frameSlots": null,
"stateSchema": [
{
"key": "bungHoles",
"label": "Spundlöcher",
"kind": "choice",
"options": [
"OPEN",
"CLOSED",
"BEE_ESCAPE"
],
"optionLabels": [
"offen",
"zu",
"Bienenflucht"
]
}
],
"active": true
},
{
"id": "hive-part-zl10-queen-excluder",
"kind": "QUEEN_EXCLUDER",
"name": "Niro-Absperrgitter Zander Liebig",
"lengthMm": 478,
"widthMm": 376,
"heightMm": 2,
"frameSlots": null,
"stateSchema": [],
"active": true
},
{
"id": "hive-part-zl10-feeder",
"kind": "FEEDER",
"name": "Liebig Zweikammer-Futterzarge",
"lengthMm": 520,
"widthMm": 420,
"heightMm": 70,
"frameSlots": null,
"stateSchema": [
{
"key": "syrupLiters",
"label": "Flüssigfutter",
"kind": "level",
"unit": "l",
"max": 3,
"step": 0.5,
"feedType": "SUGAR_WATER"
},
{
"key": "fondantKg",
"label": "Futterteig",
"kind": "level",
"unit": "kg",
"max": 2.5,
"step": 0.5,
"feedType": "FEED_PASTE"
}
],
"active": true
},
{
"id": "hive-part-zl10-cover-abdeckfix",
"kind": "COVER_SHEET",
"name": "Abdeck-Fix (Folie, klar, 0,4 mm)",
"lengthMm": 478,
"widthMm": 378,
"heightMm": 1,
"frameSlots": null,
"stateSchema": [],
"active": true
},
{
"id": "hive-part-zl10-cover-lotus",
"kind": "COVER_SHEET",
"name": "Imgut Lotus-Abdeckung (0,5 mm)",
"lengthMm": 478,
"widthMm": 378,
"heightMm": 1,
"frameSlots": null,
"stateSchema": [],
"active": true
},
{
"id": "hive-part-zl10-propolis-screen",
"kind": "PROPOLIS_SCREEN",
"name": "Imgut Propolisgitter",
"lengthMm": 478,
"widthMm": 378,
"heightMm": 3,
"frameSlots": null,
"stateSchema": [],
"active": true
},
{
"id": "hive-part-zl10-inner-lid",
"kind": "INNER_LID",
"name": "Liebig Holzdeckel",
"lengthMm": 525,
"widthMm": 430,
"heightMm": 35,
"frameSlots": null,
"stateSchema": [
{
"key": "feedHole",
"label": "Futterloch",
"kind": "choice",
"options": [
"OPEN",
"CLOSED"
],
"optionLabels": [
"offen",
"zu"
]
}
],
"active": true
},
{
"id": "hive-part-zl10-insulation",
"kind": "INSULATION",
"name": "Styropor-Einlage (selbst gebaut)",
"lengthMm": 465,
"widthMm": 365,
"heightMm": 20,
"frameSlots": null,
"stateSchema": [],
"active": true
},
{
"id": "hive-part-zl10-roof",
"kind": "ROOF",
"name": "Edelstahldeckel konisch Liebig",
"lengthMm": 525,
"widthMm": 430,
"heightMm": 60,
"frameSlots": null,
"stateSchema": [],
"active": true
},
{
"id": "hive-part-zl10-evaporator",
"kind": "EVAPORATOR",
"name": "Nassenheider Verdunster Professional",
"lengthMm": 200,
"widthMm": 140,
"heightMm": 120,
"frameSlots": null,
"stateSchema": [
{
"key": "acidMl",
"label": "Ameisensäure",
"kind": "level",
"unit": "ml",
"max": 290,
"step": 10
}
],
"active": true
}
]
}