Skip to content
This repository was archived by the owner on Apr 23, 2020. It is now read-only.

Commit 9ccc0eb

Browse files
author
Ivan Dudarev
committed
add unit test
1 parent a5645bb commit 9ccc0eb

File tree

7 files changed

+132
-0
lines changed

7 files changed

+132
-0
lines changed

phpunit.xml.dist

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<phpunit bootstrap="tests/bootstrap.php" colors="true">
3+
<testsuites>
4+
<testsuite>
5+
<directory>tests</directory>
6+
</testsuite>
7+
</testsuites>
8+
<filter>
9+
<whitelist>
10+
<directory suffix="Test.php">src</directory>
11+
</whitelist>
12+
</filter>
13+
</phpunit>

tests/IptoolTest.php

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
<?php
2+
namespace Ddrv\Tests\Iptool;
3+
4+
use PHPUnit\Framework\TestCase;
5+
use Ddrv\Iptool\Iptool;
6+
use Ddrv\Iptool\Converter;
7+
8+
/**
9+
* @covers Iptool
10+
* @covers Converter
11+
*/
12+
class IptoolTest extends TestCase
13+
{
14+
public function testCreateDatabase()
15+
{
16+
$time = time();
17+
$author = 'Unit Test';
18+
$license = 'Test License';
19+
$tmpDir = __DIR__.DIRECTORY_SEPARATOR.'tmp';
20+
$csvDir = __DIR__.DIRECTORY_SEPARATOR.'csv';
21+
$dbFile = __DIR__.DIRECTORY_SEPARATOR.'dat'.DIRECTORY_SEPARATOR.'iptool.test.dat';
22+
$converter = new Converter($tmpDir);
23+
24+
$converter->setAuthor($author);
25+
$converter->setTime($time);
26+
$converter->setLicense($license);
27+
28+
$converter->addCSV('infoCSV',$csvDir.DIRECTORY_SEPARATOR.'info.csv',2);
29+
$converter->addCSV('networksCSV',$csvDir.DIRECTORY_SEPARATOR.'networks.csv',1);
30+
31+
$info = array(
32+
'interval' => array(
33+
'type' => 'int',
34+
'column' => 1,
35+
),
36+
'caption' => array(
37+
'type' => 'string',
38+
'column' => 2,
39+
'transform' => 'low',
40+
),
41+
'extendedInfo' => array(
42+
'type' => 'string',
43+
'column' => 3,
44+
),
45+
);
46+
$converter->addRegister('info','infoCSV',0, $info);
47+
48+
$networks = array(
49+
'info' => 2,
50+
);
51+
$converter->addNetworks('networksCSV', 'ip', 0, 1, $networks);
52+
$converter->create($dbFile);
53+
54+
$iptool = new Iptool($dbFile);
55+
$meta = $iptool->about();
56+
57+
$this->assertSame($meta['created'], $time);
58+
$this->assertSame($meta['author'], $author);
59+
$this->assertSame($meta['license'], $license);
60+
$this->assertSame($meta['networks']['count'], 4);
61+
$this->assertSame($meta['networks']['data']['info'][0], 'interval');
62+
$this->assertSame($meta['networks']['data']['info'][1], 'caption');
63+
$this->assertSame($meta['networks']['data']['info'][2], 'extendedInfo');
64+
65+
$info = $iptool->find('0.0.0.1');
66+
$this->assertSame($info['network']['first'], '0.0.0.0');
67+
$this->assertSame($info['network']['last'], '63.255.255.255');
68+
$this->assertSame($info['data']['info']['interval'], 1);
69+
$this->assertSame($info['data']['info']['caption'], 'some info 5');
70+
$this->assertSame($info['data']['info']['extendedInfo'], 'some info 6');
71+
72+
$info = $iptool->find('64.0.10.0');
73+
$this->assertSame($info['network']['first'], '64.0.0.0');
74+
$this->assertSame($info['network']['last'], '127.255.255.255');
75+
$this->assertSame($info['data']['info']['interval'], 2);
76+
$this->assertSame($info['data']['info']['caption'], 'some info 7');
77+
$this->assertSame($info['data']['info']['extendedInfo'], 'some info 8');
78+
79+
$info = $iptool->find('128.100.0.13');
80+
$this->assertSame($info['network']['first'], '128.0.0.0');
81+
$this->assertSame($info['network']['last'], '191.255.255.255');
82+
$this->assertSame($info['data']['info']['interval'], 3);
83+
$this->assertSame($info['data']['info']['caption'], 'some info 1');
84+
$this->assertSame($info['data']['info']['extendedInfo'], 'some info 2');
85+
86+
$info = $iptool->find('202.100.0.13');
87+
$this->assertSame($info['network']['first'], '192.0.0.0');
88+
$this->assertSame($info['network']['last'], '255.255.255.255');
89+
$this->assertSame($info['data']['info']['interval'], 4);
90+
$this->assertSame($info['data']['info']['caption'], 'some info 3');
91+
$this->assertSame($info['data']['info']['extendedInfo'], 'some info 4');
92+
93+
unlink($dbFile);
94+
$tmpFiles = glob($tmpDir.DIRECTORY_SEPARATOR.'*');
95+
foreach ($tmpFiles as $tmpFile) {
96+
unlink($tmpFile);
97+
}
98+
}
99+
}

tests/bootstrap.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?php
2+
include __DIR__.DIRECTORY_SEPARATOR.'../src/Iptool.php';
3+
include __DIR__.DIRECTORY_SEPARATOR.'../src/Converter.php';
4+
5+
/* fix for PHP 7 */
6+
if (!class_exists('\PHPUnit\Framework\TestCase') && class_exists('\PHPUnit_Framework_TestCase')) {
7+
class_alias('\PHPUnit_Framework_TestCase', '\PHPUnit\Framework\TestCase');
8+
}

tests/csv/info.csv

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
Строка с какой-либо информацией (например, копирайт). Вторая строка описывает колонки и тоже не будет использоваться в БД.
2+
id,interval_num,data1,data2
3+
2,3,"some info 1","some info 2"
4+
17,4,"some info 3","some info 4"
5+
89,1,"some info 5","some info 6"
6+
192,2,"some info 7","some info 8"
7+
34,"unused row","some info 9","some info 10"

tests/csv/networks.csv

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
first_ip,last_ip,register_id
2+
"0.0.0.0","63.255.255.255",89
3+
"64.0.0.0","127.255.255.255",192
4+
"128.0.0.0","191.255.255.255",2
5+
"192.0.0.0","255.255.255.255",17

tests/dat/.gitkeep

Whitespace-only changes.

tests/tmp/.gitkeep

Whitespace-only changes.

0 commit comments

Comments
 (0)