11local luaunit = require (" luaunit" )
22local middleclass = require (" middleclass" )
3+ local assertions = require (" luatypechecks.assertions" )
34local checks = require (" luatypechecks.checks" )
5+ local Nameable = require (" luaserialization.nameable" )
6+ local Stringifiable = require (" luaserialization.stringifiable" )
47local DistanceLimit = require (" luaplot.distancelimit" )
58
9+ local MockClass = middleclass (" MockClass" )
10+
11+ local SerializableMockClass = middleclass (" SerializableMockClass" )
12+ SerializableMockClass :include (Nameable )
13+ SerializableMockClass :include (Stringifiable )
14+
15+ function SerializableMockClass :initialize (id )
16+ assertions .is_integer (id )
17+
18+ self .id = id
19+ end
20+
21+ function SerializableMockClass :__data ()
22+ return {
23+ field_1 = self .id + 100 ,
24+ field_2 = string.format (" test-%d" , self .id ),
25+ }
26+ end
27+
628-- luacheck: globals TestDistanceLimit
729TestDistanceLimit = {}
830
@@ -33,7 +55,6 @@ function TestDistanceLimit.test_new_string()
3355end
3456
3557function TestDistanceLimit .test_new_class ()
36- local MockClass = middleclass (" MockClass" )
3758 local mock = MockClass :new ()
3859 local limit = DistanceLimit :new (23 , mock )
3960
@@ -48,7 +69,6 @@ function TestDistanceLimit.test_new_class()
4869end
4970
5071function TestDistanceLimit .test_new_negative_maximum ()
51- local MockClass = middleclass (" MockClass" )
5272 local mock = MockClass :new ()
5373 local limit = DistanceLimit :new (- 23 , mock )
5474
@@ -61,3 +81,59 @@ function TestDistanceLimit.test_new_negative_maximum()
6181 luaunit .assert_is_table (limit .suitable_value )
6282 luaunit .assert_true (checks .is_instance (limit .suitable_value , MockClass ))
6383end
84+
85+ function TestDistanceLimit .test_tostring_number ()
86+ local limit = DistanceLimit :new (23 , 42 )
87+ local text = tostring (limit )
88+
89+ luaunit .assert_is_string (text )
90+ luaunit .assert_equals (text , " {" ..
91+ " __name = \" Point\" ," ..
92+ " maximal_distance = 23," ..
93+ " suitable_value = 42" ..
94+ " }" )
95+ end
96+
97+ function TestDistanceLimit .test_tostring_string ()
98+ local limit = DistanceLimit :new (23 , " test" )
99+ local text = tostring (limit )
100+
101+ luaunit .assert_is_string (text )
102+ luaunit .assert_equals (text , " {" ..
103+ " __name = \" Point\" ," ..
104+ " maximal_distance = 23," ..
105+ " suitable_value = \" test\" " ..
106+ " }" )
107+ end
108+
109+ function TestDistanceLimit .test_tostring_class ()
110+ luaunit .skip (" skip" )
111+
112+ local mock = MockClass :new ()
113+ local limit = DistanceLimit :new (23 , mock )
114+ local text = tostring (limit )
115+
116+ luaunit .assert_is_string (text )
117+ luaunit .assert_equals (text , " {" ..
118+ " __name = \" Point\" ," ..
119+ " maximal_distance = 23," ..
120+ " suitable_value = {}" ..
121+ " }" )
122+ end
123+
124+ function TestDistanceLimit .test_tostring_serializable_class ()
125+ local mock = SerializableMockClass :new (42 )
126+ local limit = DistanceLimit :new (23 , mock )
127+ local text = tostring (limit )
128+
129+ luaunit .assert_is_string (text )
130+ luaunit .assert_equals (text , " {" ..
131+ " __name = \" Point\" ," ..
132+ " maximal_distance = 23," ..
133+ " suitable_value = {" ..
134+ " __name = \" SerializableMockClass\" ," ..
135+ " field_1 = 142," ..
136+ " field_2 = \" test-42\" " ..
137+ " }" ..
138+ " }" )
139+ end
0 commit comments