Merge commit '0f6aab9da6fe982218a01f4a5b896e65fcced437' as 'third_party/flatbuffers'
This commit is contained in:
+22
@@ -0,0 +1,22 @@
|
||||
import glob
|
||||
import os
|
||||
import shutil
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
|
||||
test_nim_dir = Path(__file__).absolute().parent
|
||||
test_dir = test_nim_dir.parent
|
||||
|
||||
|
||||
def main():
|
||||
try:
|
||||
subprocess.check_call("testament --megatest:off all".split())
|
||||
finally:
|
||||
shutil.rmtree(test_nim_dir / "nimcache")
|
||||
shutil.rmtree(test_nim_dir / "testresults")
|
||||
for f in glob.glob(str(test_nim_dir / "tests" / "*" / "test")):
|
||||
os.remove(f)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,27 @@
|
||||
discard """
|
||||
action: "run"
|
||||
exitcode: 0
|
||||
timeout: 60.0
|
||||
"""
|
||||
import std/unittest
|
||||
import flatbuffers
|
||||
import ../../../MoreDefaults
|
||||
|
||||
suite "TestMoreDefaults":
|
||||
|
||||
test "testFlatbuffersObject":
|
||||
var fbb = newBuilder(0)
|
||||
fbb.MoreDefaultsStart()
|
||||
let root = fbb.MoreDefaultsEnd()
|
||||
fbb.Finish(root)
|
||||
|
||||
var defaults: MoreDefaults
|
||||
defaults.GetRootAs(fbb.FinishedBytes(), 0)
|
||||
check(defaults.emptyString == "")
|
||||
check(defaults.ints == [])
|
||||
check(defaults.floats == [])
|
||||
check(defaults.bools == [])
|
||||
check(defaults.intsLength == 0)
|
||||
check(defaults.floatsLength == 0)
|
||||
check(defaults.abcsLength == 0)
|
||||
check(defaults.boolsLength == 0)
|
||||
@@ -0,0 +1,39 @@
|
||||
discard """
|
||||
action: "run"
|
||||
exitcode: 0
|
||||
timeout: 60.0
|
||||
"""
|
||||
import std/unittest
|
||||
import std/options
|
||||
import flatbuffers
|
||||
import ../../../TestMutatingBool
|
||||
import ../../../Property
|
||||
|
||||
suite "TestMutatingBool":
|
||||
|
||||
test "MutatingBool":
|
||||
var builder = newBuilder(1024)
|
||||
builder.TestMutatingBoolStart()
|
||||
builder.TestMutatingBoolAddB(builder.PropertyCreate(false))
|
||||
let root = builder.TestMutatingBoolEnd()
|
||||
builder.Finish(root)
|
||||
|
||||
var test_mutating_bool: TestMutatingBool
|
||||
GetRootAs(test_mutating_bool, builder.FinishedBytes(), 0)
|
||||
check(test_mutating_bool.b.isSome)
|
||||
var prop2 = test_mutating_bool.b.get()
|
||||
check(prop2.property == false)
|
||||
discard (prop2.property = false)
|
||||
check(prop2.property == false)
|
||||
discard (prop2.property = true)
|
||||
check(prop2.property == true)
|
||||
|
||||
test "EmptyBool":
|
||||
var builder = newBuilder(1024)
|
||||
builder.TestMutatingBoolStart()
|
||||
let root = builder.TestMutatingBoolEnd()
|
||||
builder.Finish(root)
|
||||
|
||||
var test_mutating_bool: TestMutatingBool
|
||||
GetRootAs(test_mutating_bool, builder.FinishedBytes(), 0)
|
||||
check(test_mutating_bool.b.isNone)
|
||||
@@ -0,0 +1,207 @@
|
||||
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])
|
||||
@@ -0,0 +1,29 @@
|
||||
discard """
|
||||
action: "run"
|
||||
exitcode: 0
|
||||
timeout: 60.0
|
||||
"""
|
||||
import std/unittest
|
||||
import std/options
|
||||
import flatbuffers
|
||||
import ../../../optional_scalars/ScalarStuff
|
||||
|
||||
|
||||
suite "TestOptionalScalars":
|
||||
|
||||
test "OptionalScalars":
|
||||
var builder = newBuilder(1024)
|
||||
builder.ScalarStuffStart()
|
||||
let root = builder.ScalarStuffEnd()
|
||||
builder.Finish(root)
|
||||
|
||||
var optionals: ScalarStuff
|
||||
optionals.GetRootAs(builder.FinishedBytes(), 0)
|
||||
|
||||
# Creates a flatbuffer with optional values.
|
||||
check(optionals.justI8 == 0)
|
||||
check(optionals.maybeF32.isNone)
|
||||
check(optionals.defaultBool == true)
|
||||
check(optionals.justU16 == 0)
|
||||
check(optionals.maybeEnum.isNone)
|
||||
check(optionals.defaultU64 == 42)
|
||||
Reference in New Issue
Block a user