File tree 4 files changed +117
-4
lines changed
tests/TextAnalysis/Corpus 4 files changed +117
-4
lines changed Original file line number Diff line number Diff line change
1
+ <?php
2
+
3
+ namespace TextAnalysis \Corpus ;
4
+
5
+ use PDO ;
6
+
7
+ /**
8
+ * Opens the US names sqlite database
9
+ *
10
+ * @author yooper
11
+ */
12
+ class NameCorpus extends ReadCorpusAbstract
13
+ {
14
+ protected $ pdo ;
15
+
16
+ public function __construct ($ dir = null , $ lang = 'eng ' )
17
+ {
18
+ if (!$ dir ) {
19
+ $ dir = get_storage_path ('corpora ' );
20
+ }
21
+ parent ::__construct ($ dir , $ lang );
22
+ }
23
+
24
+
25
+ public function getFileNames (): array
26
+ {
27
+ return ['us_names.sqlite3 ' ];
28
+ }
29
+
30
+ /**
31
+ *
32
+ * @param string $name
33
+ * @return boolean
34
+ */
35
+ public function isFirstName ($ name ) : bool
36
+ {
37
+ return $ this ->isName ('names_by_state_and_year ' , $ name );
38
+ }
39
+
40
+ /**
41
+ *
42
+ * @param string $name
43
+ * @return boolean
44
+ */
45
+ public function isLastName ($ name ) : bool
46
+ {
47
+ return $ this ->isName ('surnames ' , $ name );
48
+ }
49
+
50
+ /**
51
+ * Check if the name exists
52
+ * @param string $tableName
53
+ * @param string $name
54
+ * @return boolean
55
+ */
56
+ protected function isName ($ tableName , $ name ) : bool
57
+ {
58
+ $ stmt = $ this ->getPdo ()->prepare ("SELECT name FROM $ tableName WHERE name = LOWER(:name) LIMIT 1 " );
59
+ $ stmt ->bindParam (':name ' , $ name );
60
+ $ stmt ->execute ();
61
+ return !empty ($ stmt ->fetchColumn ());
62
+ }
63
+
64
+
65
+ /**
66
+ * @return PDO
67
+ */
68
+ public function getPdo () : PDO
69
+ {
70
+ if (empty ($ this ->pdo )) {
71
+ $ this ->pdo = new PDO ("sqlite: " .$ this ->getDir ().$ this ->getFileNames ()[0 ]);
72
+ }
73
+ return $ this ->pdo ;
74
+ }
75
+ }
76
+
77
+
Original file line number Diff line number Diff line change 2
2
3
3
namespace TextAnalysis \Corpus ;
4
4
5
-
6
5
/**
7
6
* Abstract class for making corpus readers
8
7
*/
@@ -29,7 +28,7 @@ abstract class ReadCorpusAbstract
29
28
public function __construct ($ dir , $ lang = 'eng ' )
30
29
{
31
30
$ this ->dir = $ dir ;
32
- $ this ->lang = $ lang ;
31
+ $ this ->lang = $ lang ;
33
32
}
34
33
35
34
/**
Original file line number Diff line number Diff line change @@ -54,8 +54,7 @@ public function verifyChecksum()
54
54
if (empty ($ this ->getPackage ()->getChecksum ())) {
55
55
return true ;
56
56
}
57
-
58
- return $ this ->getPackage ()->getChecksum () === md5 ($ this ->getDownloadFullPath ());
57
+ return $ this ->getPackage ()->getChecksum () === md5_file ($ this ->getDownloadFullPath ());
59
58
}
60
59
61
60
/**
Original file line number Diff line number Diff line change
1
+ <?php
2
+
3
+ namespace Tests \TextAnalysis \Corpus ;
4
+
5
+ use TextAnalysis \Corpus \NameCorpus ;
6
+ use Mockery ;
7
+ use TextAnalysis \Corpus \ImportCorpus ;
8
+
9
+ /**
10
+ * Test out the name corpus
11
+ *
12
+ * @author yooper
13
+ */
14
+ class NameCorpusTest extends \PHPUnit_Framework_TestCase
15
+ {
16
+ public function testFirstNames ()
17
+ {
18
+ if ( getenv ('SKIP_TEST ' )) {
19
+ return ;
20
+ }
21
+
22
+ $ corpus = new NameCorpus ();
23
+ $ this ->assertTrue ($ corpus ->isFirstName ('Dan ' ));
24
+ $ this ->assertFalse ($ corpus ->isFirstName ('very ' ));
25
+
26
+ }
27
+
28
+ public function testLastNames ()
29
+ {
30
+ if ( getenv ('SKIP_TEST ' )) {
31
+ return ;
32
+ }
33
+
34
+ $ corpus = new NameCorpus ();
35
+ $ this ->assertTrue ($ corpus ->isLastName ('Williamson ' ));
36
+ $ this ->assertFalse ($ corpus ->isLastName ('baggins ' ));
37
+ }
38
+ }
You can’t perform that action at this time.
0 commit comments