1111 */
1212class IptoolTest extends TestCase
1313{
14- public function testCreateDatabase ()
14+ public function testSimple ()
1515 {
1616 $ time = time ();
1717 $ author = 'Unit Test ' ;
1818 $ license = 'Test License ' ;
1919 $ tmpDir = __DIR__ .DIRECTORY_SEPARATOR .'tmp ' ;
20- $ csvDir = __DIR__ .DIRECTORY_SEPARATOR .'csv ' ;
20+ $ csvDir = __DIR__ .DIRECTORY_SEPARATOR .'csv ' . DIRECTORY_SEPARATOR . ' simple ' ;
2121 $ dbFile = __DIR__ .DIRECTORY_SEPARATOR .'dat ' .DIRECTORY_SEPARATOR .'iptool.test.dat ' ;
2222 $ converter = new Converter ($ tmpDir );
2323
@@ -98,4 +98,152 @@ public function testCreateDatabase()
9898 }
9999 }
100100 }
101+
102+ public function testJoinIntervals ()
103+ {
104+ $ time = time ();
105+ $ author = 'Unit Test ' ;
106+ $ license = 'Test License ' ;
107+ $ tmpDir = __DIR__ .DIRECTORY_SEPARATOR .'tmp ' ;
108+ $ csvDir = __DIR__ .DIRECTORY_SEPARATOR .'csv ' .DIRECTORY_SEPARATOR .'joinIntervals ' ;
109+ $ dbFile = __DIR__ .DIRECTORY_SEPARATOR .'dat ' .DIRECTORY_SEPARATOR .'iptool.join.dat ' ;
110+ $ converter = new Converter ($ tmpDir );
111+
112+ $ converter ->setAuthor ($ author );
113+ $ converter ->setTime ($ time );
114+ $ converter ->setLicense ($ license );
115+
116+ $ converter ->addCSV ('infoCSV ' ,$ csvDir .DIRECTORY_SEPARATOR .'info.csv ' ,1 );
117+ $ converter ->addCSV ('networksCSV ' ,$ csvDir .DIRECTORY_SEPARATOR .'networks.csv ' ,1 );
118+
119+ $ info = array (
120+ 'name ' => array (
121+ 'type ' => 'string ' ,
122+ 'column ' => 1 ,
123+ ),
124+ );
125+ $ converter ->addRegister ('info ' ,'infoCSV ' ,0 , $ info );
126+
127+ $ networks = array (
128+ 'info ' => 2 ,
129+ );
130+ $ converter ->addNetworks ('networksCSV ' , 'ip ' , 0 , 1 , $ networks );
131+ $ converter ->create ($ dbFile );
132+
133+ $ iptool = new Iptool ($ dbFile );
134+ $ meta = $ iptool ->about ();
135+
136+ $ this ->assertSame ($ meta ['created ' ], $ time );
137+ $ this ->assertSame ($ meta ['author ' ], $ author );
138+ $ this ->assertSame ($ meta ['license ' ], $ license );
139+ $ this ->assertSame ($ meta ['networks ' ]['count ' ], 2 );
140+ $ this ->assertSame ($ meta ['networks ' ]['data ' ]['info ' ][0 ], 'name ' );
141+
142+ $ info = $ iptool ->find ('0.0.0.1 ' );
143+ $ this ->assertSame ($ info ['network ' ]['first ' ], '0.0.0.0 ' );
144+ $ this ->assertSame ($ info ['network ' ]['last ' ], '63.255.255.255 ' );
145+ $ this ->assertSame ($ info ['data ' ]['info ' ]['name ' ], 'small interval ' );
146+
147+ $ info = $ iptool ->find ('64.0.10.0 ' );
148+ $ this ->assertSame ($ info ['network ' ]['first ' ], '64.0.0.0 ' );
149+ $ this ->assertSame ($ info ['network ' ]['last ' ], '255.255.255.255 ' );
150+ $ this ->assertSame ($ info ['data ' ]['info ' ]['name ' ], 'big interval ' );
151+
152+ unlink ($ dbFile );
153+ $ tmpFiles = glob ($ tmpDir .DIRECTORY_SEPARATOR .'* ' );
154+ foreach ($ tmpFiles as $ tmpFile ) {
155+ if ($ tmpFile != $ tmpDir .DIRECTORY_SEPARATOR .'.gitkeep ' ) {
156+ unlink ($ tmpFile );
157+ }
158+ }
159+ }
160+
161+ public function testMiddleIntervals ()
162+ {
163+ $ time = time ();
164+ $ author = 'Unit Test ' ;
165+ $ license = 'Test License ' ;
166+ $ tmpDir = __DIR__ .DIRECTORY_SEPARATOR .'tmp ' ;
167+ $ csvDir = __DIR__ .DIRECTORY_SEPARATOR .'csv ' .DIRECTORY_SEPARATOR .'middleIntervals ' ;
168+ $ dbFile = __DIR__ .DIRECTORY_SEPARATOR .'dat ' .DIRECTORY_SEPARATOR .'iptool.test.dat ' ;
169+ $ converter = new Converter ($ tmpDir );
170+
171+ $ converter ->setAuthor ($ author );
172+ $ converter ->setTime ($ time );
173+ $ converter ->setLicense ($ license );
174+
175+ $ converter ->addCSV ('infoCSV ' ,$ csvDir .DIRECTORY_SEPARATOR .'info.csv ' ,1 );
176+ $ converter ->addCSV ('networksCSV ' ,$ csvDir .DIRECTORY_SEPARATOR .'networks.csv ' ,1 );
177+
178+ $ info = array (
179+ 'name ' => array (
180+ 'type ' => 'string ' ,
181+ 'column ' => 1 ,
182+ ),
183+ );
184+ $ converter ->addRegister ('info ' ,'infoCSV ' ,0 , $ info );
185+
186+ $ networks = array (
187+ 'info ' => 2 ,
188+ );
189+ $ converter ->addNetworks ('networksCSV ' , 'ip ' , 0 , 1 , $ networks );
190+ $ converter ->create ($ dbFile );
191+
192+ $ iptool = new Iptool ($ dbFile );
193+ $ meta = $ iptool ->about ();
194+
195+ $ this ->assertSame ($ meta ['created ' ], $ time );
196+ $ this ->assertSame ($ meta ['author ' ], $ author );
197+ $ this ->assertSame ($ meta ['license ' ], $ license );
198+ $ this ->assertSame ($ meta ['networks ' ]['count ' ], 5 );
199+ $ this ->assertSame ($ meta ['networks ' ]['data ' ]['info ' ][0 ], 'name ' );
200+
201+ $ info = $ iptool ->find ('0.0.0.1 ' );
202+ $ this ->assertSame ($ info ['network ' ]['first ' ], '0.0.0.0 ' );
203+ $ this ->assertSame ($ info ['network ' ]['last ' ], '63.255.255.255 ' );
204+ $ this ->assertEmpty ($ info ['data ' ]['info ' ]['name ' ]);
205+
206+ $ info = $ iptool ->find ('64.0.10.0 ' );
207+ $ this ->assertSame ($ info ['network ' ]['first ' ], '64.0.0.0 ' );
208+ $ this ->assertSame ($ info ['network ' ]['last ' ], '64.255.255.255 ' );
209+ $ this ->assertSame ($ info ['data ' ]['info ' ]['name ' ], 'interval 1 ' );
210+
211+ $ info = $ iptool ->find ('83.10.10.1 ' );
212+ $ this ->assertSame ($ info ['network ' ]['first ' ], '65.0.0.0 ' );
213+ $ this ->assertSame ($ info ['network ' ]['last ' ], '127.255.255.255 ' );
214+ $ this ->assertEmpty ($ info ['data ' ]['info ' ]['name ' ]);
215+
216+ $ info = $ iptool ->find ('173.255.10.0 ' );
217+ $ this ->assertSame ($ info ['network ' ]['first ' ], '128.0.0.0 ' );
218+ $ this ->assertSame ($ info ['network ' ]['last ' ], '191.255.255.255 ' );
219+ $ this ->assertSame ($ info ['data ' ]['info ' ]['name ' ], 'interval 2 ' );
220+
221+ $ info = $ iptool ->find ('203.255.10.5 ' );
222+ $ this ->assertSame ($ info ['network ' ]['first ' ], '192.0.0.0 ' );
223+ $ this ->assertSame ($ info ['network ' ]['last ' ], '255.255.255.255 ' );
224+ $ this ->assertEmpty ($ info ['data ' ]['info ' ]['name ' ]);
225+
226+ /*
227+ $info = $iptool->find('128.100.0.13');
228+ $this->assertSame($info['network']['first'], '128.0.0.0');
229+ $this->assertSame($info['network']['last'], '191.255.255.255');
230+ $this->assertSame($info['data']['info']['interval'], 3);
231+ $this->assertSame($info['data']['info']['caption'], 'some info 1');
232+ $this->assertSame($info['data']['info']['extendedInfo'], 'some info 2');
233+ /*
234+ $info = $iptool->find('202.100.0.13');
235+ $this->assertSame($info['network']['first'], '192.0.0.0');
236+ $this->assertSame($info['network']['last'], '255.255.255.255');
237+ $this->assertSame($info['data']['info']['interval'], 4);
238+ $this->assertSame($info['data']['info']['caption'], 'some info 3');
239+ $this->assertSame($info['data']['info']['extendedInfo'], 'some info 4');
240+ */
241+ unlink ($ dbFile );
242+ $ tmpFiles = glob ($ tmpDir .DIRECTORY_SEPARATOR .'* ' );
243+ foreach ($ tmpFiles as $ tmpFile ) {
244+ if ($ tmpFile != $ tmpDir .DIRECTORY_SEPARATOR .'.gitkeep ' ) {
245+ unlink ($ tmpFile );
246+ }
247+ }
248+ }
101249}
0 commit comments