@@ -1780,6 +1780,7 @@ describe('flatten()', () => {
1780
1780
1781
1781
describe ( 'reach()' , ( ) => {
1782
1782
1783
+ const sym = Symbol ( ) ;
1783
1784
const obj = {
1784
1785
a : {
1785
1786
b : {
@@ -1792,7 +1793,10 @@ describe('reach()', () => {
1792
1793
g : {
1793
1794
h : 3
1794
1795
} ,
1795
- '-2' : true
1796
+ '-2' : true ,
1797
+ [ sym ] : {
1798
+ v : true
1799
+ }
1796
1800
} ,
1797
1801
i : function ( ) { } ,
1798
1802
j : null ,
@@ -1806,15 +1810,18 @@ describe('reach()', () => {
1806
1810
expect ( Hoek . reach ( obj , null ) ) . to . equal ( obj ) ;
1807
1811
expect ( Hoek . reach ( obj , false ) ) . to . equal ( obj ) ;
1808
1812
expect ( Hoek . reach ( obj ) ) . to . equal ( obj ) ;
1813
+ expect ( Hoek . reach ( obj , [ ] ) ) . to . equal ( obj ) ;
1809
1814
} ) ;
1810
1815
1811
- it ( 'returns first value of array' , ( ) => {
1816
+ it ( 'returns values of array' , ( ) => {
1812
1817
1813
1818
expect ( Hoek . reach ( obj , 'k.0' ) ) . to . equal ( 4 ) ;
1819
+ expect ( Hoek . reach ( obj , 'k.1' ) ) . to . equal ( 8 ) ;
1814
1820
} ) ;
1815
1821
1816
1822
it ( 'returns last value of array using negative index' , ( ) => {
1817
1823
1824
+ expect ( Hoek . reach ( obj , 'k.-1' ) ) . to . equal ( 1 ) ;
1818
1825
expect ( Hoek . reach ( obj , 'k.-2' ) ) . to . equal ( 9 ) ;
1819
1826
} ) ;
1820
1827
@@ -1860,6 +1867,9 @@ describe('reach()', () => {
1860
1867
it ( 'returns undefined on invalid member' , ( ) => {
1861
1868
1862
1869
expect ( Hoek . reach ( obj , 'a.b.c.d-.x' ) ) . to . equal ( undefined ) ;
1870
+ expect ( Hoek . reach ( obj , 'k.x' ) ) . to . equal ( undefined ) ;
1871
+ expect ( Hoek . reach ( obj , 'k.1000' ) ) . to . equal ( undefined ) ;
1872
+ expect ( Hoek . reach ( obj , 'k/0.5' , '/' ) ) . to . equal ( undefined ) ;
1863
1873
} ) ;
1864
1874
1865
1875
it ( 'returns function member' , ( ) => {
@@ -1899,6 +1909,21 @@ describe('reach()', () => {
1899
1909
1900
1910
expect ( Hoek . reach ( obj , 'q' , { default : '' } ) ) . to . equal ( '' ) ;
1901
1911
} ) ;
1912
+
1913
+ it ( 'allows array-based lookup' , ( ) => {
1914
+
1915
+ expect ( Hoek . reach ( obj , [ 'a' , 'b' , 'c' , 'd' ] ) ) . to . equal ( 1 ) ;
1916
+ expect ( Hoek . reach ( obj , [ 'k' , '1' ] ) ) . to . equal ( 8 ) ;
1917
+ expect ( Hoek . reach ( obj , [ 'k' , 1 ] ) ) . to . equal ( 8 ) ;
1918
+ expect ( Hoek . reach ( obj , [ 'k' , '-2' ] ) ) . to . equal ( 9 ) ;
1919
+ expect ( Hoek . reach ( obj , [ 'k' , - 2 ] ) ) . to . equal ( 9 ) ;
1920
+ } ) ;
1921
+
1922
+ it ( 'allows array-based lookup with symbols' , ( ) => {
1923
+
1924
+ expect ( Hoek . reach ( obj , [ 'a' , sym , 'v' ] ) ) . to . equal ( true ) ;
1925
+ expect ( Hoek . reach ( obj , [ 'a' , Symbol ( ) , 'v' ] ) ) . to . equal ( undefined ) ;
1926
+ } ) ;
1902
1927
} ) ;
1903
1928
1904
1929
describe ( 'reachTemplate()' , ( ) => {
0 commit comments