Skip to content

Commit 1d49e09

Browse files
committed
Add unit test
1 parent d7454c9 commit 1d49e09

9 files changed

+398
-3
lines changed

org/msgpack/Decoder.hx

+3-3
Original file line numberDiff line numberDiff line change
@@ -120,12 +120,12 @@ class Decoder {
120120
}
121121

122122
if (pairs.length == 0)
123-
return new StringMap<Dynamic>();
123+
return new StringMap();
124124

125125
switch(Type.typeof(pairs[0].k))
126126
{
127127
case TInt:
128-
var out = new IntMap<Dynamic>();
128+
var out = new IntMap();
129129
for (p in pairs)
130130
out.set(p.k, p.v);
131131

@@ -135,7 +135,7 @@ class Decoder {
135135
switch(Type.getClassName(c))
136136
{
137137
case "String":
138-
var out = new StringMap<Dynamic>();
138+
var out = new StringMap();
139139
for (p in pairs)
140140
out.set(p.k, p.v);
141141

unit-test/.munit

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
version=2.1.0
2+
src=src
3+
bin=build
4+
report=report
5+
hxml=unit-test.hxml
6+
classPaths=../

unit-test/src/ArrayTest.hx

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package ;
2+
3+
import massive.munit.util.Timer;
4+
import massive.munit.Assert;
5+
import massive.munit.async.AsyncFactory;
6+
import org.msgpack.MsgPack;
7+
8+
9+
class ArrayTest
10+
{
11+
12+
13+
public function new()
14+
{
15+
16+
}
17+
18+
@BeforeClass
19+
public function beforeClass():Void
20+
{
21+
}
22+
23+
@AfterClass
24+
public function afterClass():Void
25+
{
26+
}
27+
28+
@Before
29+
public function setup():Void
30+
{
31+
}
32+
33+
@After
34+
public function tearDown():Void
35+
{
36+
}
37+
38+
@Test
39+
public function testExample():Void
40+
{
41+
var a = [ 3, 2, 1, 7, 8, 9 ];
42+
var e = MsgPack.encode(a);
43+
var d = MsgPack.decode(e);
44+
45+
Assert.isType(d, Array);
46+
Assert.isTrue(Lambda.fold(d, function(v, b) {
47+
return b && a[Lambda.indexOf(d, v)] == v;
48+
}, true));
49+
}
50+
}

unit-test/src/BasicTest.hx

+71
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package ;
2+
3+
import massive.munit.util.Timer;
4+
import massive.munit.Assert;
5+
import massive.munit.async.AsyncFactory;
6+
import org.msgpack.MsgPack;
7+
8+
9+
class BasicTest
10+
{
11+
12+
13+
public function new()
14+
{
15+
16+
}
17+
18+
@BeforeClass
19+
public function beforeClass():Void
20+
{
21+
}
22+
23+
@AfterClass
24+
public function afterClass():Void
25+
{
26+
}
27+
28+
@Before
29+
public function setup():Void
30+
{
31+
}
32+
33+
@After
34+
public function tearDown():Void
35+
{
36+
}
37+
38+
@Test
39+
public function testExample():Void
40+
{
41+
Assert.isTrue(doTest(null, "TNull" ));
42+
Assert.isTrue(doTest(true, "TBool" ));
43+
Assert.isTrue(doTest(1000, "TInt" ));
44+
Assert.isTrue(doTest(1.01, "TFloat"));
45+
Assert.isTrue(doTest("ab", "String"));
46+
}
47+
48+
function doTest<T>(a:T, n:String)
49+
{
50+
var e = MsgPack.encode(a);
51+
var d = MsgPack.decode(e);
52+
53+
switch (Type.typeof(a))
54+
{
55+
case TNull : return n == "TNull";
56+
case TBool : return n == "TBool";
57+
case TInt : return n == "TInt";
58+
case TFloat : return n == "TFloat";
59+
case TClass(c):
60+
switch (Type.getClassName(c))
61+
{
62+
case "String":
63+
return n == "String";
64+
}
65+
66+
default:
67+
}
68+
69+
return false;
70+
}
71+
}

unit-test/src/MapTest.hx

+74
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
package ;
2+
3+
import haxe.ds.IntMap;
4+
import haxe.ds.StringMap;
5+
import massive.munit.util.Timer;
6+
import massive.munit.Assert;
7+
import massive.munit.async.AsyncFactory;
8+
import org.msgpack.Decoder.DecodeOption.AsMap;
9+
import org.msgpack.MsgPack;
10+
11+
12+
class MapTest
13+
{
14+
15+
16+
public function new()
17+
{
18+
19+
}
20+
21+
@BeforeClass
22+
public function beforeClass():Void
23+
{
24+
}
25+
26+
@AfterClass
27+
public function afterClass():Void
28+
{
29+
}
30+
31+
@Before
32+
public function setup():Void
33+
{
34+
}
35+
36+
@After
37+
public function tearDown():Void
38+
{
39+
}
40+
41+
@Test
42+
public function testExample():Void
43+
{
44+
var im = new IntMap<String>();
45+
im.set(1, "one");
46+
im.set(3, "Three");
47+
im.set(9, "Nine");
48+
49+
var e = MsgPack.encode(im);
50+
var d = MsgPack.decode(e, AsMap);
51+
52+
Assert.isType(d, IntMap);
53+
54+
var ni = cast(d, IntMap<Dynamic>);
55+
for (k in im.keys())
56+
Assert.isTrue(ni.exists(k) && ni.get(k) == im.get(k));
57+
58+
59+
var sm = new StringMap<Int>();
60+
sm.set("one", 1);
61+
sm.set("Three", 3);
62+
sm.set("Nine", 9);
63+
64+
e = MsgPack.encode(sm);
65+
d = MsgPack.decode(e, AsMap);
66+
67+
Assert.isType(d, StringMap);
68+
69+
var ns = cast(d, StringMap<Dynamic>);
70+
for (k in sm.keys())
71+
Assert.isTrue(ns.exists(k) && ns.get(k) == sm.get(k));
72+
73+
}
74+
}

unit-test/src/ObjectTest.hx

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package ;
2+
3+
import massive.munit.util.Timer;
4+
import massive.munit.Assert;
5+
import massive.munit.async.AsyncFactory;
6+
import org.msgpack.Decoder.DecodeOption.AsObject;
7+
import org.msgpack.MsgPack;
8+
9+
10+
class ObjectTest
11+
{
12+
13+
14+
public function new()
15+
{
16+
17+
}
18+
19+
@BeforeClass
20+
public function beforeClass():Void
21+
{
22+
}
23+
24+
@AfterClass
25+
public function afterClass():Void
26+
{
27+
}
28+
29+
@Before
30+
public function setup():Void
31+
{
32+
}
33+
34+
@After
35+
public function tearDown():Void
36+
{
37+
}
38+
39+
@Test
40+
public function testExample():Void
41+
{
42+
var e = MsgPack.encode({ a: 10, b: "abc"});
43+
var d = MsgPack.decode(e, AsObject);
44+
45+
Assert.isTrue(Reflect.hasField(d, "a")
46+
&& Reflect.hasField(d, "b")
47+
&& Reflect.field(d, "a") == 10
48+
&& Reflect.field(d, "b") == "abc");
49+
}
50+
}

unit-test/src/TestMain.hx

+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
import massive.munit.client.PrintClient;
2+
import massive.munit.client.RichPrintClient;
3+
import massive.munit.client.HTTPClient;
4+
import massive.munit.client.JUnitReportClient;
5+
import massive.munit.client.SummaryReportClient;
6+
import massive.munit.TestRunner;
7+
8+
#if js
9+
import js.Lib;
10+
#end
11+
12+
/**
13+
* Auto generated Test Application.
14+
* Refer to munit command line tool for more information (haxelib run munit)
15+
*/
16+
class TestMain
17+
{
18+
static function main(){ new TestMain(); }
19+
20+
public function new()
21+
{
22+
var suites = new Array<Class<massive.munit.TestSuite>>();
23+
suites.push(TestSuite);
24+
25+
#if MCOVER
26+
var client = new mcover.coverage.munit.client.MCoverPrintClient();
27+
var httpClient = new HTTPClient(new mcover.coverage.munit.client.MCoverSummaryReportClient());
28+
#else
29+
var client = new RichPrintClient();
30+
var httpClient = new HTTPClient(new SummaryReportClient());
31+
#end
32+
33+
var runner:TestRunner = new TestRunner(client);
34+
runner.addResultClient(httpClient);
35+
//runner.addResultClient(new HTTPClient(new JUnitReportClient()));
36+
37+
runner.completionHandler = completionHandler;
38+
runner.run(suites);
39+
}
40+
41+
/*
42+
updates the background color and closes the current browser
43+
for flash and html targets (useful for continous integration servers)
44+
*/
45+
function completionHandler(successful:Bool):Void
46+
{
47+
try
48+
{
49+
#if flash
50+
flash.external.ExternalInterface.call("testResult", successful);
51+
#elseif js
52+
js.Lib.eval("testResult(" + successful + ");");
53+
#elseif sys
54+
Sys.exit(0);
55+
#end
56+
}
57+
// if run from outside browser can get error which we can ignore
58+
catch (e:Dynamic)
59+
{
60+
}
61+
}
62+
}

unit-test/src/TestSuite.hx

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import massive.munit.TestSuite;
2+
3+
import MapTest;
4+
import BasicTest;
5+
import ArrayTest;
6+
import ObjectTest;
7+
8+
/**
9+
* Auto generated Test Suite for MassiveUnit.
10+
* Refer to munit command line tool for more information (haxelib run munit)
11+
*/
12+
13+
class TestSuite extends massive.munit.TestSuite
14+
{
15+
16+
public function new()
17+
{
18+
super();
19+
20+
add(MapTest);
21+
add(BasicTest);
22+
add(ArrayTest);
23+
add(ObjectTest);
24+
}
25+
}

0 commit comments

Comments
 (0)