configTest.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | ThinkPHP [ WE CAN DO IT JUST THINK ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2006~2016 http://thinkphp.cn All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
  8. // +----------------------------------------------------------------------
  9. // | Author: liu21st <liu21st@gmail.com>
  10. // +----------------------------------------------------------------------
  11. /**
  12. * 配置测试
  13. * @author Haotong Lin <lofanmi@gmail.com>
  14. */
  15. namespace tests\thinkphp\library\think;
  16. use tests\thinkphp\library\think\config\ConfigInitTrait;
  17. use think\Config;
  18. class configTest extends \PHPUnit_Framework_TestCase
  19. {
  20. use ConfigInitTrait;
  21. public function testRange()
  22. {
  23. // test default range
  24. $this->assertEquals('_sys_', call_user_func(self::$internalRangeFoo));
  25. $this->assertTrue(is_array(call_user_func(self::$internalConfigFoo)));
  26. // test range initialization
  27. Config::range('_test_');
  28. $this->assertEquals('_test_', call_user_func(self::$internalRangeFoo));
  29. $this->assertEquals([], call_user_func(self::$internalConfigFoo)['_test_']);
  30. }
  31. // public function testParse()
  32. // {
  33. // see \think\config\driver\...Test.php
  34. // }
  35. public function testLoad()
  36. {
  37. $file = APP_PATH . 'config' . EXT;
  38. $config = array_change_key_case(include $file);
  39. $name = '_name_';
  40. $range = '_test_';
  41. $this->assertEquals($config, Config::load($file, $name, $range));
  42. $this->assertNotEquals(null, Config::load($file, $name, $range));
  43. }
  44. public function testHas()
  45. {
  46. $range = '_test_';
  47. $this->assertFalse(Config::has('abcd', $range));
  48. call_user_func(self::$internalConfigFoo, [
  49. $range => ['abcd' => 'value'],
  50. ]);
  51. $this->assertTrue(Config::has('abcd', $range));
  52. // else ...
  53. $this->assertFalse(Config::has('abcd.efg', $range));
  54. call_user_func(self::$internalConfigFoo, [
  55. $range => ['abcd' => ['efg' => 'value']],
  56. ]);
  57. $this->assertTrue(Config::has('abcd.efg', $range));
  58. }
  59. public function testGet()
  60. {
  61. $range = '_test_';
  62. call_user_func(self::$internalConfigFoo, [
  63. $range => []
  64. ]);
  65. $this->assertEquals([], Config::get(null, $range));
  66. $this->assertEquals(null, Config::get(null, 'does_not_exist'));
  67. $value = 'value';
  68. // test getting configuration
  69. call_user_func(self::$internalConfigFoo, [
  70. $range => ['abcd' => 'efg']
  71. ]);
  72. $this->assertEquals('efg', Config::get('abcd', $range));
  73. $this->assertEquals(null, Config::get('does_not_exist', $range));
  74. $this->assertEquals(null, Config::get('abcd', 'does_not_exist'));
  75. // test getting configuration with dot syntax
  76. call_user_func(self::$internalConfigFoo, [
  77. $range => ['one' => ['two' => $value]]
  78. ]);
  79. $this->assertEquals($value, Config::get('one.two', $range));
  80. $this->assertEquals(null, Config::get('one.does_not_exist', $range));
  81. $this->assertEquals(null, Config::get('one.two', 'does_not_exist'));
  82. }
  83. public function testSet()
  84. {
  85. $range = '_test_';
  86. // without dot syntax
  87. $name = 'name';
  88. $value = 'value';
  89. Config::set($name, $value, $range);
  90. $config = call_user_func(self::$internalConfigFoo);
  91. $this->assertEquals($value, $config[$range][$name]);
  92. // with dot syntax
  93. $name = 'one.two';
  94. $value = 'dot value';
  95. Config::set($name, $value, $range);
  96. $config = call_user_func(self::$internalConfigFoo);
  97. $this->assertEquals($value, $config[$range]['one']['two']);
  98. // if (is_array($name)):
  99. // see testLoad()
  100. // ...
  101. // test getting all configurations...?
  102. // return self::$config[$range]; ??
  103. $value = ['all' => 'configuration'];
  104. call_user_func(self::$internalConfigFoo, [$range => $value]);
  105. $this->assertEquals($value, Config::set(null, null, $range));
  106. $this->assertNotEquals(null, Config::set(null, null, $range));
  107. }
  108. public function testReset()
  109. {
  110. $range = '_test_';
  111. call_user_func(self::$internalConfigFoo, [$range => ['abcd' => 'efg']]);
  112. // clear all configurations
  113. Config::reset(true);
  114. $config = call_user_func(self::$internalConfigFoo);
  115. $this->assertEquals([], $config);
  116. // clear the configuration in range of parameter.
  117. call_user_func(self::$internalConfigFoo, [
  118. $range => [
  119. 'abcd' => 'efg',
  120. 'hijk' => 'lmn',
  121. ],
  122. 'a' => 'b',
  123. ]);
  124. Config::reset($range);
  125. $config = call_user_func(self::$internalConfigFoo);
  126. $this->assertEquals([
  127. $range => [],
  128. 'a' => 'b',
  129. ], $config);
  130. }
  131. }