22namespace Gt \FileCache \Test ;
33
44use Gt \FileCache \Cache ;
5+ use Gt \FileCache \FileAccess ;
56use PHPUnit \Framework \TestCase ;
7+ use stdClass ;
68
79class CacheTest extends TestCase {
10+ public function tearDown ():void {
11+ exec ("rm -rf " . sys_get_temp_dir () . "/phpgt-filecache " );
12+ }
13+
814 public function testGet_expectedValueReturned ():void {
9- $ sut = new Cache ( sys_get_temp_dir () . " /phpgt-filecache " );
15+ $ sut = $ this -> getSut ( );
1016 $ value = "test-value " ;
1117 $ result = $ sut ->get ("test " , fn () => $ value );
1218 self ::assertSame ($ value , $ result );
1319 }
1420
1521 public function testGet_expectedValueReturnedOnMultipleCalls ():void {
16- $ sut = new Cache ( sys_get_temp_dir () . " /phpgt-filecache " );
22+ $ sut = $ this -> getSut ( );
1723 $ value = "test-value " ;
1824 $ result = $ sut ->get ("test " , fn () => $ value );
1925 self ::assertSame ($ value , $ result );
@@ -22,7 +28,7 @@ public function testGet_expectedValueReturnedOnMultipleCalls():void {
2228 }
2329
2430 public function testGet_multipleCallsDoesNotCallbackMultipleTimes ():void {
25- $ sut = new Cache ( sys_get_temp_dir () . " /phpgt/filecache " );
31+ $ sut = $ this -> getSut ( );
2632 $ name = uniqid ("test- " );
2733 $ value = "test-value-123 " ;
2834 $ count = 0 ;
@@ -39,4 +45,69 @@ public function testGet_multipleCallsDoesNotCallbackMultipleTimes():void {
3945 self ::assertSame ($ value , $ result );
4046 self ::assertSame (1 , $ count );
4147 }
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+ }
42113}
0 commit comments