blob: c971d6079d3f30c0dbf0170fb3d97d449adae454 [file] [log] [blame]
discard """
action: "run"
exitcode: 0
timeout: 60.0
"""
import std/unittest
import std/options
import flatbuffers
import ../../../MyGame/Example/Test
import ../../../MyGame/Example/Monster
import ../../../MyGame/Example/Vec3
import ../../../MyGame/Example/Color as ColorMod
import ../../../MyGame/Example/Any as AnyMod
proc verifyMonster(monster: var Monster) =
check(monster.hp == 80)
check(monster.mana == 150)
check(monster.name == "MyMonster")
check(monster.pos.isSome)
let pos = monster.pos.get()
check(pos.x == 1)
check(pos.y == 2)
check(pos.z == 3)
check(pos.test1 == 3)
check(pos.test2 == Color.Green)
check(pos.test3.a == 5)
check(pos.test3.b == 6)
check(monster.testType == Any.Monster)
check(monster.test.isSome)
let monster2 = Monster(tab: monster.test.get())
check(monster2.name == "Fred")
check((monster.mana = 10) == false)
check(monster.mana == 150)
check(monster.inventoryLength == 5)
var sum: uint8 = 0
for item in monster.inventory:
sum += item
check(sum == 10)
check(monster.test4Length == 2)
let test0 = monster.test4(0)
let test1 = monster.test4(1)
var sum0 = test0.a + test0.b
var sum1 = test1.a + test1.b
check(sum0 + sum1 == 100)
check(monster.testarrayofstringLength == 2)
check(monster.testarrayofstring(0) == "test1")
check(monster.testarrayofstring(1) == "test2")
check(monster.testbool == true)
suite "TestMyGame":
test "testData":
let data: seq[byte] = @[byte(48), 0, 0, 0, 77, 79, 78, 83, 0, 0, 0, 0, 36,
0, 72, 0, 40, 0, 0, 0, 38, 0, 32, 0, 0, 0, 28, 0, 0, 0, 27, 0, 20, 0,
16, 0, 12, 0, 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 36, 0, 0, 0, 164, 0, 0, 0,
0, 0, 0, 1, 60, 0, 0, 0, 68, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 1, 88, 0, 0,
0, 120, 0, 0, 0, 0, 0, 80, 0, 0, 0, 128, 63, 0, 0, 0, 64, 0, 0, 64, 64,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 64, 2, 0, 5, 0, 6, 0, 0, 0, 2, 0, 0, 0,
64, 0, 0, 0, 48, 0, 0, 0, 2, 0, 0, 0, 30, 0, 40, 0, 10, 0, 20, 0, 152,
255, 255, 255, 4, 0, 0, 0, 4, 0, 0, 0, 70, 114, 101, 100, 0, 0, 0, 0, 5,
0, 0, 0, 0, 1, 2, 3, 4, 0, 0, 0, 5, 0, 0, 0, 116, 101, 115, 116, 50, 0,
0, 0, 5, 0, 0, 0, 116, 101, 115, 116, 49, 0, 0, 0, 9, 0, 0, 0, 77, 121,
77, 111, 110, 115, 116, 101, 114, 0, 0, 0, 3, 0, 0, 0, 20, 0, 0, 0, 36,
0, 0, 0, 4, 0, 0, 0, 240, 255, 255, 255, 32, 0, 0, 0, 248, 255, 255,
255, 36, 0, 0, 0, 12, 0, 8, 0, 0, 0, 0, 0, 0, 0, 4, 0, 12, 0, 0, 0, 28,
0, 0, 0, 5, 0, 0, 0, 87, 105, 108, 109, 97, 0, 0, 0, 6, 0, 0, 0, 66, 97,
114, 110, 101, 121, 0, 0, 5, 0, 0, 0, 70, 114, 111, 100, 111, 0, 0, 0]
var monster: Monster
GetRootAs(monster, data, 0)
verifyMonster(monster)
test "testCreateString":
var fbb = newBuilder(0)
let name = fbb.Create("Frodo")
fbb.Finish(name)
check(fbb.FinishedBytes() == @[byte(4), 0, 0, 0, 5, 0, 0, 0, 70, 114, 111,
100, 111, 0, 0, 0])
test "testCreateVector":
var fbb = newBuilder(0)
let vec = fbb.Create(@[byte(0), 1, 2, 3, 4])
fbb.Finish(vec)
check(fbb.FinishedBytes() == @[byte(4), 0, 0, 0, 5, 0, 0, 0, 0, 1, 2, 3, 4,
0, 0, 0])
test "createSimpleMonster":
var fbb = newBuilder(0)
let names = [
fbb.Create("Frodo"),
fbb.Create("Barney"),
fbb.Create("Wilma"),
]
fbb.MonsterStart()
fbb.MonsterAddName(names[0])
let monster = fbb.MonsterEnd()
fbb.Finish(monster)
check(fbb.FinishedBytes() == @[byte(16), 0, 0, 0, 12, 0, 8, 0, 0, 0, 0, 0,
0, 0, 4, 0, 12, 0, 0, 0, 28, 0, 0, 0, 5, 0, 0, 0, 87, 105, 108, 109, 97,
0, 0, 0, 6, 0, 0, 0, 66, 97, 114, 110, 101, 121, 0, 0, 5, 0, 0, 0, 70,
114, 111, 100, 111, 0, 0, 0])
test "testCreateTestVector":
var fbb = newBuilder(0)
fbb.MonsterStartTest4Vector(2)
discard fbb.TestCreate(a = 30, b = 40)
discard fbb.TestCreate(a = 10, b = 20)
let test4 = fbb.EndVector()
fbb.Finish(test4)
check(fbb.FinishedBytes() == @[byte(4), 0, 0, 0, 2, 0, 0, 0, 10, 0, 20, 0,
30, 0, 40, 0])
test "testTableWithStruct":
var fbb = newBuilder(0)
fbb.MonsterStart()
fbb.MonsterAddPos(fbb.Vec3Create(x = 1,
y = 2,
z = 3,
test1 = 3,
test2 = Color.Green,
test3_a = 5, test3_b = 6))
let monster_end = fbb.MonsterEnd()
fbb.Finish(monster_end)
check(fbb.FinishedBytes() == @[byte(12), 0, 0, 0, 0, 0, 6, 0, 36, 0, 4, 0,
6, 0, 0, 0, 0, 0, 128, 63, 0, 0, 0, 64, 0, 0, 64, 64, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 8, 64, 2, 0, 5, 0, 6, 0, 0, 0])
test "testCreateMonster":
var fbb = newBuilder(0)
let names = [
fbb.Create("Frodo"),
fbb.Create("Barney"),
fbb.Create("Wilma"),
]
var offsets: seq[uoffset] = @[]
fbb.MonsterStart()
fbb.MonsterAddName(names[0])
offsets.add(fbb.MonsterEnd())
fbb.MonsterStart()
fbb.MonsterAddName(names[1])
offsets.add(fbb.MonsterEnd())
fbb.MonsterStart()
fbb.MonsterAddName(names[2])
offsets.add(fbb.MonsterEnd())
let str = fbb.Create("MyMonster")
let test1 = fbb.Create("test1")
let test2 = fbb.Create("test2")
let inv = fbb.Create(@[byte(0), 1, 2, 3, 4])
let fred = fbb.Create("Fred")
fbb.MonsterStart()
fbb.MonsterAddName(fred)
let mon2 = fbb.MonsterEnd()
fbb.MonsterStartTest4Vector(2)
discard fbb.TestCreate(a = 30, b = 40)
discard fbb.TestCreate(a = 10, b = 20)
let test4 = fbb.EndVector()
fbb.MonsterStartTestarrayofstringVector(2)
fbb.PrependOffsetRelative(test1)
fbb.PrependOffsetRelative(test2)
let stringTestVector = fbb.EndVector()
fbb.MonsterStartTestarrayoftablesVector(3)
fbb.PrependOffsetRelative(offsets[0])
fbb.PrependOffsetRelative(offsets[1])
fbb.PrependOffsetRelative(offsets[2])
let tableTestVector = fbb.EndVector()
fbb.MonsterStart()
fbb.MonsterAddPos(fbb.Vec3Create(x = 1,
y = 2,
z = 3,
test1 = 3,
test2 = Color.Green,
test3_a = 5, test3_b = 6))
fbb.MonsterAddHp(80)
fbb.MonsterAddName(str)
fbb.MonsterAddInventory(inv)
fbb.MonsterAddTestType(Any.Monster.uint8)
fbb.MonsterAddTest(mon2)
fbb.MonsterAddTest4(test4)
fbb.MonsterAddTestarrayofstring(stringTestVector)
fbb.MonsterAddTestbool(true)
fbb.MonsterAddTestarrayoftables(tableTestVector)
let monster_end = fbb.MonsterEnd()
fbb.Finish(monster_end)
check(fbb.FinishedBytes() == @[byte(40), 0, 0, 0, 36, 0, 72, 0, 40, 0, 0, 0,
38, 0, 32, 0, 0, 0, 28, 0, 0, 0, 27, 0, 20, 0, 16, 0, 12, 0, 4, 0, 0, 0,
0, 0, 0, 0, 11, 0, 36, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 1, 76, 0, 0, 0,
84, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 1, 104, 0, 0, 0, 136, 0, 0, 0, 0, 0,
80, 0, 0, 0, 128, 63, 0, 0, 0, 64, 0, 0, 64, 64, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 8, 64, 2, 0, 5, 0, 6, 0, 0, 0, 3, 0, 0, 0, 108, 0, 0, 0, 112, 0,
0, 0, 128, 0, 0, 0, 2, 0, 0, 0, 52, 0, 0, 0, 60, 0, 0, 0, 2, 0, 0, 0,
10, 0, 20, 0, 30, 0, 40, 0, 168, 255, 255, 255, 4, 0, 0, 0, 4, 0, 0, 0,
70, 114, 101, 100, 0, 0, 0, 0, 5, 0, 0, 0, 0, 1, 2, 3, 4, 0, 0, 0, 5, 0,
0, 0, 116, 101, 115, 116, 50, 0, 0, 0, 5, 0, 0, 0, 116, 101, 115, 116,
49, 0, 0, 0, 9, 0, 0, 0, 77, 121, 77, 111, 110, 115, 116, 101, 114, 0,
0, 0, 240, 255, 255, 255, 32, 0, 0, 0, 248, 255, 255, 255, 36, 0, 0, 0,
12, 0, 8, 0, 0, 0, 0, 0, 0, 0, 4, 0, 12, 0, 0, 0, 28, 0, 0, 0, 5, 0, 0,
0, 87, 105, 108, 109, 97, 0, 0, 0, 6, 0, 0, 0, 66, 97, 114, 110, 101,
121, 0, 0, 5, 0, 0, 0, 70, 114, 111, 100, 111, 0, 0, 0])