123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- SuperStrict
- Import brl.maxunit
- Import text.persistencexml
- Import "types.bmx"
- Type FieldsTest Extends TTest
- Const NUM_INT:Int = 12345
- Const NUM_LONG:Long = 84343238901:Long
- Const NUM_FLOAT:Float = 10.688:Float
- Const NUM_DOUBLE:Double = 9420.0394:Double
- Const NUM_BYTE:Byte = 129
- Const NUM_SHORT:Short = 40000
- Const NUM_UINT:UInt = 123456
- Const NUM_ULONG:ULong = 4473709551615:ULong
- Const NUM_LONGINT:LongInt = 998800
- Const NUM_ULONGINT:ULongInt = 560000
-
- Const STR_ONE:String = "ABCDEFG"
- Const STR_TWO:String = "HIJKLMNOP"
- Const STR_THREE:String = "QRSTUVWXYZ"
-
- Const OBJ_ONE:Int = 6644
- Const OBJ_TWO:Int = 7755
- Const OBJ_THREE:Int = 8833
-
- Field persist:TPersist
-
- Field obj1:TObject
- Field obj2:TObject
- Field obj3:TObject
- Method Setup() { before }
- persist = New TXMLPersistenceBuilder.Build()
-
- obj1 = New TObject.Create(OBJ_ONE)
- obj2 = New TObject.Create(OBJ_TWO)
- obj3 = New TObject.Create(OBJ_THREE)
- End Method
- Method TearDown() { after }
- persist.Free()
- End Method
- Method testNumbers() { test }
- Local numbers:TNumbers = New TNumbers.Create(NUM_INT, NUM_LONG, NUM_FLOAT, NUM_DOUBLE, NUM_BYTE, NUM_SHORT, NUM_UINT, NUM_ULONG, NUM_LONGINT, NUM_ULONGINT)
-
- Local s:String = persist.SerializeToString(numbers)
- persist.Free()
-
- Local result:TNumbers = TNumbers(persist.DeserializeObject(s))
-
- assertEquals(NUM_INT, result.a)
- assertEquals(NUM_LONG, result.b)
- assertEquals(NUM_FLOAT, result.c)
- assertEquals(NUM_DOUBLE, result.d)
- assertEquals(NUM_BYTE, result.e)
- assertEquals(NUM_SHORT, result.f)
- assertEquals(NUM_UINT, result.g)
- assertEquals(NUM_ULONG, result.h)
- assertEquals(NUM_LONGINT, result.i)
- assertEquals(NUM_ULONGINT, result.j)
- End Method
-
- Method testStrings() { test }
-
- Local strings:TStrings = New TStrings.Create(STR_ONE, STR_TWO, STR_THREE)
-
- Local s:String = persist.SerializeToString(strings)
-
- validateStringRefs(s, STR_ONE, 1)
- validateStringRefs(s, STR_TWO, 1)
- validateStringRefs(s, STR_THREE, 1)
-
- persist.Free()
-
- Local result:TStrings = TStrings(persist.DeserializeObject(s))
-
- assertEquals(STR_ONE, result.a)
- assertEquals(STR_TWO, result.b)
- assertEquals(STR_THREE, result.c)
-
- End Method
- ' should only store a single copy of the string
- Method testStringRefs() { test }
-
- Local strings:TStrings = New TStrings.Create(STR_ONE, STR_ONE, STR_ONE)
-
- Local s:String = persist.SerializeToString(strings)
-
- validateStringRefs(s, STR_ONE, 1)
-
- persist.Free()
-
- Local result:TStrings = TStrings(persist.DeserializeObject(s))
-
- assertEquals(STR_ONE, result.a)
- assertEquals(STR_ONE, result.b)
- assertEquals(STR_ONE, result.c)
-
- End Method
-
- Method testObjects() { test }
-
- Local container:TObjectContainer = New TObjectContainer.Create(obj1, obj2, obj3)
- Local s:String = persist.SerializeToString(container)
- validateStringRefs(s, OBJ_ONE, 1)
- validateStringRefs(s, OBJ_TWO, 1)
- validateStringRefs(s, OBJ_THREE, 1)
- persist.Free()
- Local result:TObjectContainer = TObjectContainer(persist.DeserializeObject(s))
- assertEquals(OBJ_ONE, result.object1.code)
- assertEquals(OBJ_TWO, result.object2.code)
- assertEquals(OBJ_THREE, result.object3.code)
- End Method
- Method testObjectRefs() { test }
-
- Local container:TObjectContainer = New TObjectContainer.Create(obj1, obj2, obj1)
- Local s:String = persist.SerializeToString(container)
- validateStringRefs(s, OBJ_ONE, 1)
- validateStringRefs(s, OBJ_TWO, 1)
- persist.Free()
- Local result:TObjectContainer = TObjectContainer(persist.DeserializeObject(s))
- assertEquals(OBJ_ONE, result.object1.code)
- assertEquals(OBJ_TWO, result.object2.code)
- assertEquals(OBJ_ONE, result.object3.code)
- End Method
- Method testEmptyStrings() { test }
-
- Local strings:TStrings = New TStrings.Create(Null, STR_ONE, Null)
-
- assertNull(strings.a)
- assertEquals(STR_ONE, strings.b)
- assertNull(strings.c)
- Local s:String = persist.SerializeToString(strings)
- validateStringRefs(s, STR_ONE, 1)
- persist.Free()
- Local result:TStrings = TStrings(persist.DeserializeObject(s))
-
- assertNull(result.a)
- assertEquals(STR_ONE, result.b)
- assertNull(result.c)
-
- End Method
-
- Method validateStringRefs(ser:String, txt:String, expected:Int)
- Local count:Int
- Local i:Int = ser.Find(txt, 0)
- While i <> -1
- count :+ 1
- i = ser.Find(txt, i + txt.length)
- Wend
-
- assertEquals(expected, count, "Refs mismatch")
- End Method
- End Type
|