2
2
namespace Gt \FileCache \Test ;
3
3
4
4
use Gt \FileCache \Cache ;
5
+ use Gt \FileCache \FileAccess ;
5
6
use PHPUnit \Framework \TestCase ;
7
+ use stdClass ;
6
8
7
9
class CacheTest extends TestCase {
10
+ public function tearDown ():void {
11
+ exec ("rm -rf " . sys_get_temp_dir () . "/phpgt-filecache " );
12
+ }
13
+
8
14
public function testGet_expectedValueReturned ():void {
9
- $ sut = new Cache ( sys_get_temp_dir () . " /phpgt-filecache " );
15
+ $ sut = $ this -> getSut ( );
10
16
$ value = "test-value " ;
11
17
$ result = $ sut ->get ("test " , fn () => $ value );
12
18
self ::assertSame ($ value , $ result );
13
19
}
14
20
15
21
public function testGet_expectedValueReturnedOnMultipleCalls ():void {
16
- $ sut = new Cache ( sys_get_temp_dir () . " /phpgt-filecache " );
22
+ $ sut = $ this -> getSut ( );
17
23
$ value = "test-value " ;
18
24
$ result = $ sut ->get ("test " , fn () => $ value );
19
25
self ::assertSame ($ value , $ result );
@@ -22,7 +28,7 @@ public function testGet_expectedValueReturnedOnMultipleCalls():void {
22
28
}
23
29
24
30
public function testGet_multipleCallsDoesNotCallbackMultipleTimes ():void {
25
- $ sut = new Cache ( sys_get_temp_dir () . " /phpgt/filecache " );
31
+ $ sut = $ this -> getSut ( );
26
32
$ name = uniqid ("test- " );
27
33
$ value = "test-value-123 " ;
28
34
$ count = 0 ;
@@ -39,4 +45,69 @@ public function testGet_multipleCallsDoesNotCallbackMultipleTimes():void {
39
45
self ::assertSame ($ value , $ result );
40
46
self ::assertSame (1 , $ count );
41
47
}
48
+
49
+ public function testGetString ():void {
50
+ $ value = uniqid ();
51
+ $ sut = $ this ->getSut ([
52
+ "test " => $ value ,
53
+ ]);
54
+ self ::assertSame ($ value , $ sut ->getString ("test " , fn () => "new " ));
55
+ }
56
+
57
+ public function testGetInt ():void {
58
+ $ value = (string )rand (100 ,999 );
59
+ $ sut = $ this ->getSut ([
60
+ "test " => $ value ,
61
+ ]);
62
+ self ::assertSame ((int )$ value , $ sut ->getInt ("test " , fn () => 2 ));
63
+ }
64
+
65
+ public function testGetFoat ():void {
66
+ $ value = (string )(rand (100 ,999 ) * 3.14159 );
67
+ $ sut = $ this ->getSut ([
68
+ "test " => $ value ,
69
+ ]);
70
+ self ::assertSame ((float )$ value , $ sut ->getFloat ("test " , fn () => 3.141 ));
71
+ }
72
+
73
+ public function testGetBool ():void {
74
+ $ value = "yes " ;
75
+ $ sut = $ this ->getSut ([
76
+ "test " => $ value ,
77
+ ]);
78
+ self ::assertTrue ($ sut ->getBool ("test " , fn () => false ));
79
+ }
80
+
81
+ public function testGetDateTime ():void {
82
+ $ value = "1988-04-05 " ;
83
+ $ sut = $ this ->getSut ([
84
+ "test " => $ value ,
85
+ ]);
86
+ self ::assertSame ($ value , $ sut ->getDateTime ("test " , fn () => 123 )->format ("Y-m-d " ));
87
+ }
88
+
89
+ public function testGetClass ():void {
90
+ $ value = new StdClass ();
91
+ $ value ->name = uniqid ();
92
+ $ sut = $ this ->getSut ([
93
+ "test " => serialize ($ value ),
94
+ ]);
95
+ $ class = $ sut ->getClass (StdClass::class, "test " , fn () => false );
96
+ self ::assertSame ($ value ->name , $ class ->name );
97
+ }
98
+
99
+ private function getSut (array $ mockFiles = []):Cache {
100
+ $ mockFileAccess = null ;
101
+ if (!empty ($ mockFiles )) {
102
+ $ mockFileAccess = self ::createMock (FileAccess::class);
103
+ foreach ($ mockFiles as $ key => $ value ) {
104
+ $ mockFileAccess ->method ("getData " )
105
+ ->with ($ key )->willReturn ($ value );
106
+ }
107
+ }
108
+ return new Cache (
109
+ sys_get_temp_dir () . "/phpgt-filecache " ,
110
+ $ mockFileAccess ,
111
+ );
112
+ }
42
113
}
0 commit comments