@@ -39,7 +39,30 @@ public function createCachedShouldCreateResolverWithCachedExecutor()
3939 $ resolver = $ factory ->createCached ('8.8.8.8:53 ' , $ loop );
4040
4141 $ this ->assertInstanceOf ('React\Dns\Resolver\Resolver ' , $ resolver );
42- $ this ->assertInstanceOf ('React\Dns\Query\CachedExecutor ' , $ this ->getResolverPrivateMemberValue ($ resolver , 'executor ' ));
42+ $ executor = $ this ->getResolverPrivateMemberValue ($ resolver , 'executor ' );
43+ $ this ->assertInstanceOf ('React\Dns\Query\CachedExecutor ' , $ executor );
44+ $ recordCache = $ this ->getCachedExecutorPrivateMemberValue ($ executor , 'cache ' );
45+ $ recordCacheCache = $ this ->getRecordCachePrivateMemberValue ($ recordCache , 'cache ' );
46+ $ this ->assertInstanceOf ('React\Cache\CacheInterface ' , $ recordCacheCache );
47+ $ this ->assertInstanceOf ('React\Cache\ArrayCache ' , $ recordCacheCache );
48+ }
49+
50+ /** @test */
51+ public function createCachedShouldCreateResolverWithCachedExecutorWithCustomCache ()
52+ {
53+ $ cache = $ this ->getMock ('React\Cache\CacheInterface ' );
54+ $ loop = $ this ->getMock ('React\EventLoop\LoopInterface ' );
55+
56+ $ factory = new Factory ();
57+ $ resolver = $ factory ->createCached ('8.8.8.8:53 ' , $ loop , $ cache );
58+
59+ $ this ->assertInstanceOf ('React\Dns\Resolver\Resolver ' , $ resolver );
60+ $ executor = $ this ->getResolverPrivateMemberValue ($ resolver , 'executor ' );
61+ $ this ->assertInstanceOf ('React\Dns\Query\CachedExecutor ' , $ executor );
62+ $ recordCache = $ this ->getCachedExecutorPrivateMemberValue ($ executor , 'cache ' );
63+ $ recordCacheCache = $ this ->getRecordCachePrivateMemberValue ($ recordCache , 'cache ' );
64+ $ this ->assertInstanceOf ('React\Cache\CacheInterface ' , $ recordCacheCache );
65+ $ this ->assertSame ($ cache , $ recordCacheCache );
4366 }
4467
4568 /**
@@ -75,4 +98,18 @@ private function getResolverPrivateMemberValue($resolver, $field)
7598 $ reflector ->setAccessible (true );
7699 return $ reflector ->getValue ($ resolver );
77100 }
101+
102+ private function getCachedExecutorPrivateMemberValue ($ resolver , $ field )
103+ {
104+ $ reflector = new \ReflectionProperty ('React\Dns\Query\CachedExecutor ' , $ field );
105+ $ reflector ->setAccessible (true );
106+ return $ reflector ->getValue ($ resolver );
107+ }
108+
109+ private function getRecordCachePrivateMemberValue ($ resolver , $ field )
110+ {
111+ $ reflector = new \ReflectionProperty ('React\Dns\Query\RecordCache ' , $ field );
112+ $ reflector ->setAccessible (true );
113+ return $ reflector ->getValue ($ resolver );
114+ }
78115}
0 commit comments