@@ -4736,6 +4736,146 @@ describe('Lexer: Third Milestone', function() {
4736
4736
4737
4737
} ) ;
4738
4738
4739
+ describe ( 'Sequence Type Methods' , function ( ) {
4740
+
4741
+ it ( 'should handle the contains method' , function ( ) {
4742
+ input = String . raw `var arr = [1,2,3,4,5]
4743
+ var yes = arr.contains(4)
4744
+ var no = arr.contains(6)` ;
4745
+ output = [
4746
+ { type : "DECLARATION_KEYWORD" , value : "var" } ,
4747
+ { type : "IDENTIFIER" , value : "arr" } ,
4748
+ { type : "OPERATOR" , value : "=" } ,
4749
+ { type : "ARRAY_START" , value : "[" } ,
4750
+ { type : "NUMBER" , value : "1" } ,
4751
+ { type : "PUNCTUATION" , value : "," } ,
4752
+ { type : "NUMBER" , value : "2" } ,
4753
+ { type : "PUNCTUATION" , value : "," } ,
4754
+ { type : "NUMBER" , value : "3" } ,
4755
+ { type : "PUNCTUATION" , value : "," } ,
4756
+ { type : "NUMBER" , value : "4" } ,
4757
+ { type : "PUNCTUATION" , value : "," } ,
4758
+ { type : "NUMBER" , value : "5" } ,
4759
+ { type : "ARRAY_END" , value : "]" } ,
4760
+ { type : "TERMINATOR" , value : "\\n" } ,
4761
+
4762
+ { type : "DECLARATION_KEYWORD" , value : "var" } ,
4763
+ { type : "IDENTIFIER" , value : "yes" } ,
4764
+ { type : "OPERATOR" , value : "=" } ,
4765
+ { type : "IDENTIFIER" , value : "arr" } ,
4766
+ { type : "DOT_SYNTAX" , value : "." } ,
4767
+ { type : "NATIVE_METHOD" , value : "contains" } ,
4768
+ { type : "INVOCATION_START" , value : "(" } ,
4769
+ { type : "NUMBER" , value : "4" } ,
4770
+ { type : "INVOCATION_END" , value : ")" } ,
4771
+ { type : "TERMINATOR" , value : "\\n" } ,
4772
+
4773
+ { type : "DECLARATION_KEYWORD" , value : "var" } ,
4774
+ { type : "IDENTIFIER" , value : "no" } ,
4775
+ { type : "OPERATOR" , value : "=" } ,
4776
+ { type : "IDENTIFIER" , value : "arr" } ,
4777
+ { type : "DOT_SYNTAX" , value : "." } ,
4778
+ { type : "NATIVE_METHOD" , value : "contains" } ,
4779
+ { type : "INVOCATION_START" , value : "(" } ,
4780
+ { type : "NUMBER" , value : "6" } ,
4781
+ { type : "INVOCATION_END" , value : ")" } ,
4782
+ { type : "TERMINATOR" , value : "EOF" }
4783
+ ] ;
4784
+ expect ( lexer ( input ) ) . to . deep . equal ( output ) ;
4785
+ } ) ;
4786
+
4787
+ it ( 'should handle the drop first method' , function ( ) {
4788
+ input = String . raw `var arr = [1,2,3,4,5]
4789
+ var lessFirst = arr.dropFirst()
4790
+ var lessFirstThree = arr.dropFirst(3)` ;
4791
+ output = [
4792
+ { type : "DECLARATION_KEYWORD" , value : "var" } ,
4793
+ { type : "IDENTIFIER" , value : "arr" } ,
4794
+ { type : "OPERATOR" , value : "=" } ,
4795
+ { type : "ARRAY_START" , value : "[" } ,
4796
+ { type : "NUMBER" , value : "1" } ,
4797
+ { type : "PUNCTUATION" , value : "," } ,
4798
+ { type : "NUMBER" , value : "2" } ,
4799
+ { type : "PUNCTUATION" , value : "," } ,
4800
+ { type : "NUMBER" , value : "3" } ,
4801
+ { type : "PUNCTUATION" , value : "," } ,
4802
+ { type : "NUMBER" , value : "4" } ,
4803
+ { type : "PUNCTUATION" , value : "," } ,
4804
+ { type : "NUMBER" , value : "5" } ,
4805
+ { type : "ARRAY_END" , value : "]" } ,
4806
+ { type : "TERMINATOR" , value : "\\n" } ,
4807
+
4808
+ { type : "DECLARATION_KEYWORD" , value : "var" } ,
4809
+ { type : "IDENTIFIER" , value : "lessFirst" } ,
4810
+ { type : "OPERATOR" , value : "=" } ,
4811
+ { type : "IDENTIFIER" , value : "arr" } ,
4812
+ { type : "DOT_SYNTAX" , value : "." } ,
4813
+ { type : "NATIVE_METHOD" , value : "dropFirst" } ,
4814
+ { type : "INVOCATION_START" , value : "(" } ,
4815
+ { type : "INVOCATION_END" , value : ")" } ,
4816
+ { type : "TERMINATOR" , value : "\\n" } ,
4817
+
4818
+ { type : "DECLARATION_KEYWORD" , value : "var" } ,
4819
+ { type : "IDENTIFIER" , value : "lessFirstThree" } ,
4820
+ { type : "OPERATOR" , value : "=" } ,
4821
+ { type : "IDENTIFIER" , value : "arr" } ,
4822
+ { type : "DOT_SYNTAX" , value : "." } ,
4823
+ { type : "NATIVE_METHOD" , value : "dropFirst" } ,
4824
+ { type : "INVOCATION_START" , value : "(" } ,
4825
+ { type : "NUMBER" , value : "3" } ,
4826
+ { type : "INVOCATION_END" , value : ")" } ,
4827
+ { type : "TERMINATOR" , value : "EOF" }
4828
+ ] ;
4829
+ expect ( lexer ( input ) ) . to . deep . equal ( output ) ;
4830
+ } ) ;
4831
+
4832
+ it ( 'should handle the drop first method' , function ( ) {
4833
+ input = String . raw `var arr = [1,2,3,4,5]
4834
+ var lessLast = arr.dropLast()
4835
+ var lessLastThree = arr.dropLast(3)` ;
4836
+ output = [
4837
+ { type : "DECLARATION_KEYWORD" , value : "var" } ,
4838
+ { type : "IDENTIFIER" , value : "arr" } ,
4839
+ { type : "OPERATOR" , value : "=" } ,
4840
+ { type : "ARRAY_START" , value : "[" } ,
4841
+ { type : "NUMBER" , value : "1" } ,
4842
+ { type : "PUNCTUATION" , value : "," } ,
4843
+ { type : "NUMBER" , value : "2" } ,
4844
+ { type : "PUNCTUATION" , value : "," } ,
4845
+ { type : "NUMBER" , value : "3" } ,
4846
+ { type : "PUNCTUATION" , value : "," } ,
4847
+ { type : "NUMBER" , value : "4" } ,
4848
+ { type : "PUNCTUATION" , value : "," } ,
4849
+ { type : "NUMBER" , value : "5" } ,
4850
+ { type : "ARRAY_END" , value : "]" } ,
4851
+ { type : "TERMINATOR" , value : "\\n" } ,
4852
+
4853
+ { type : "DECLARATION_KEYWORD" , value : "var" } ,
4854
+ { type : "IDENTIFIER" , value : "lessLast" } ,
4855
+ { type : "OPERATOR" , value : "=" } ,
4856
+ { type : "IDENTIFIER" , value : "arr" } ,
4857
+ { type : "DOT_SYNTAX" , value : "." } ,
4858
+ { type : "NATIVE_METHOD" , value : "dropLast" } ,
4859
+ { type : "INVOCATION_START" , value : "(" } ,
4860
+ { type : "INVOCATION_END" , value : ")" } ,
4861
+ { type : "TERMINATOR" , value : "\\n" } ,
4862
+
4863
+ { type : "DECLARATION_KEYWORD" , value : "var" } ,
4864
+ { type : "IDENTIFIER" , value : "lessLastThree" } ,
4865
+ { type : "OPERATOR" , value : "=" } ,
4866
+ { type : "IDENTIFIER" , value : "arr" } ,
4867
+ { type : "DOT_SYNTAX" , value : "." } ,
4868
+ { type : "NATIVE_METHOD" , value : "dropLast" } ,
4869
+ { type : "INVOCATION_START" , value : "(" } ,
4870
+ { type : "NUMBER" , value : "3" } ,
4871
+ { type : "INVOCATION_END" , value : ")" } ,
4872
+ { type : "TERMINATOR" , value : "EOF" }
4873
+ ] ;
4874
+ expect ( lexer ( input ) ) . to . deep . equal ( output ) ;
4875
+ } ) ;
4876
+
4877
+ } ) ;
4878
+
4739
4879
} ) ;
4740
4880
4741
4881
describe ( 'Fizz Buzz Examples' , function ( ) {
0 commit comments