getMethod( 'build_map' ); self::$build_map->setAccessible( true ); } public function test_no_map() { $result = self::$build_map->invoke( self::$obj, false ); $expected = null; $this->assertEquals( $expected, $result ); } public function test_invalid_map() { $maps = self::$base . 'maps/invalid.json'; $result = self::$build_map->invoke( self::$obj, $maps ); $expected = []; $this->assertEquals( $expected, $result ); } public function test_basic_map() { $maps = self::$base . 'maps/basic.json'; $result = self::$build_map->invoke( self::$obj, $maps ); $expected = [ 'src/index.js' => [ 'dist/index.js' ], 'src/include.js' => [ 'dist/index.js' ], ]; $this->assertEquals( $expected, $result ); } public function test_mixed_map() { $maps = self::$base . 'maps/mixed.json'; $result = self::$build_map->invoke( self::$obj, $maps ); $expected = [ 'src/index.js' => [ 'dist/index.js' ], 'src/other.js' => [ 'dist/index.js' ], ]; $this->assertEquals( $expected, $result ); } public function test_other_map() { $maps = self::$base . 'maps/other.json'; $result = self::$build_map->invoke( self::$obj, $maps ); $expected = [ 'src/index.js' => [ 'dist/index.js' ], 'src/include.js' => [ 'dist/index.js', 'dist/other.js' ], ]; $this->assertEquals( $expected, $result ); } public function test_invalid_values_map() { $maps = self::$base . 'maps/invalid_values.json'; $result = self::$build_map->invoke( self::$obj, $maps ); $expected = [ 'src/index.js' => null, 'src/other.js' => null, 'src/valid.js' => [ 'string' ], ]; $this->assertEquals( $expected, $result ); } public function test_merge_map() { $maps = [ self::$base . 'maps/basic.json', self::$base . 'maps/mixed.json' ]; $result = self::$build_map->invoke( self::$obj, $maps ); $expected = [ // double is expected because it's in both files. no use bothering to remove it, that's done in make_json anyways 'src/index.js' => [ 'dist/index.js', 'dist/index.js' ], 'src/other.js' => [ 'dist/index.js' ], 'src/include.js' => [ 'dist/index.js' ], ]; $this->assertEquals( $expected, $result ); } public function test_merge_same_map() { $maps = [ self::$base . 'maps/basic.json', self::$base . 'maps/mixed.json', self::$base . 'maps/other.json' ]; $result = self::$build_map->invoke( self::$obj, $maps ); $expected = [ 'src/index.js' => [ 'dist/index.js', 'dist/index.js', 'dist/index.js' ], 'src/other.js' => [ 'dist/index.js' ], 'src/include.js' => [ 'dist/index.js', 'dist/index.js', 'dist/other.js' ], ]; $this->assertEquals( $expected, $result ); } public function test_merge_invalid_values_map() { // merge both ways $maps = [ self::$base . 'maps/basic.json', self::$base . 'maps/invalid_values.json' ]; $result = self::$build_map->invoke( self::$obj, $maps ); $expected = [ 'src/index.js' => [ 'dist/index.js', null ], 'src/other.js' => null, 'src/valid.js' => [ 'string' ], 'src/include.js' => [ 'dist/index.js' ], ]; $this->assertEquals( $expected, $result ); $maps = [ self::$base . 'maps/invalid_values.json', self::$base . 'maps/basic.json' ]; $result = self::$build_map->invoke( self::$obj, $maps ); $expected = [ 'src/index.js' => [ null, 'dist/index.js' ], 'src/other.js' => null, 'src/valid.js' => [ 'string' ], 'src/include.js' => [ 'dist/index.js' ], ]; $this->assertEquals( $expected, $result ); } }