aboutsummaryrefslogtreecommitdiff
path: root/smali/src/test/resources
diff options
context:
space:
mode:
authorJesusFreke@JesusFreke.com <JesusFreke@JesusFreke.com@55b6fa8a-2a1e-11de-a435-ffa8d773f76a>2010-06-13 20:33:35 +0000
committerJesusFreke@JesusFreke.com <JesusFreke@JesusFreke.com@55b6fa8a-2a1e-11de-a435-ffa8d773f76a>2010-06-13 20:33:35 +0000
commit2c69ece4a5e8372744b6610ea6ab9517ddb54c39 (patch)
treea99d34bd91a18a12f1c819f027f2e73f2960623b /smali/src/test/resources
parentb873c047f0d0553c2779178496748422114144da (diff)
downloadsmali-2c69ece4a5e8372744b6610ea6ab9517ddb54c39.tar.gz
Add the remaining lexer tests
git-svn-id: https://smali.googlecode.com/svn/trunk@749 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
Diffstat (limited to 'smali/src/test/resources')
-rw-r--r--smali/src/test/resources/LexerTest/CharLiteralTest.smali40
-rw-r--r--smali/src/test/resources/LexerTest/CharLiteralTest.tokens40
-rw-r--r--smali/src/test/resources/LexerTest/CommentTest.smali6
-rw-r--r--smali/src/test/resources/LexerTest/CommentTest.tokens6
-rw-r--r--smali/src/test/resources/LexerTest/InstructionTest.smali198
-rw-r--r--smali/src/test/resources/LexerTest/InstructionTest.tokens198
-rw-r--r--smali/src/test/resources/LexerTest/MiscTest.smali60
-rw-r--r--smali/src/test/resources/LexerTest/MiscTest.tokens60
-rw-r--r--smali/src/test/resources/LexerTest/StringLiteralTest.smali43
-rw-r--r--smali/src/test/resources/LexerTest/StringLiteralTest.tokens43
-rw-r--r--smali/src/test/resources/LexerTest/SymbolTest.smali19
-rw-r--r--smali/src/test/resources/LexerTest/SymbolTest.tokens12
-rw-r--r--smali/src/test/resources/LexerTest/TypeAndIdentifierTest.smali48
-rw-r--r--smali/src/test/resources/LexerTest/TypeAndIdentifierTest.tokens48
14 files changed, 821 insertions, 0 deletions
diff --git a/smali/src/test/resources/LexerTest/CharLiteralTest.smali b/smali/src/test/resources/LexerTest/CharLiteralTest.smali
new file mode 100644
index 00000000..3f5b01f9
--- /dev/null
+++ b/smali/src/test/resources/LexerTest/CharLiteralTest.smali
@@ -0,0 +1,40 @@
+' '
+' '
+'a'
+'A'
+'z'
+'Z'
+'a''a'
+'1'
+'2'
+'\n'
+'\r'
+'\t'
+'\b'
+'\f'
+'\u0030'
+'\uABCD'
+'\uabcd'
+'\\'
+'\''
+'\"'
+'"'
+
+
+'a'a'
+'ab'
+'\a'
+''
+'
+'
+'
+'\u'
+'\u0'
+'\ua'
+'\uab'
+'\u01a'
+'\uz'
+'\u012z'
+
+'a'
+' \ No newline at end of file
diff --git a/smali/src/test/resources/LexerTest/CharLiteralTest.tokens b/smali/src/test/resources/LexerTest/CharLiteralTest.tokens
new file mode 100644
index 00000000..a8a57ea5
--- /dev/null
+++ b/smali/src/test/resources/LexerTest/CharLiteralTest.tokens
@@ -0,0 +1,40 @@
+CHAR_LITERAL("' '")
+CHAR_LITERAL("'\t'")
+CHAR_LITERAL("'a'")
+CHAR_LITERAL("'A'")
+CHAR_LITERAL("'z'")
+CHAR_LITERAL("'Z'")
+CHAR_LITERAL("'a'")CHAR_LITERAL("'a'")
+CHAR_LITERAL("'1'")
+CHAR_LITERAL("'2'")
+CHAR_LITERAL("'\n'")
+CHAR_LITERAL("'\r'")
+CHAR_LITERAL("'\t'")
+CHAR_LITERAL("'\b'")
+CHAR_LITERAL("'\f'")
+CHAR_LITERAL("'\u0030'")
+CHAR_LITERAL("'\uABCD'")
+CHAR_LITERAL("'\uabcd'")
+CHAR_LITERAL("'\\'")
+CHAR_LITERAL("'''")
+CHAR_LITERAL("'\"'")
+CHAR_LITERAL("'\"'")
+
+
+CHAR_LITERAL("'a'") SIMPLE_NAME("a") INVALID_TOKEN("'")
+INVALID_TOKEN("'ab'")
+INVALID_TOKEN("'\\a'")
+INVALID_TOKEN("''")
+INVALID_TOKEN("'")
+INVALID_TOKEN("'")
+INVALID_TOKEN("'")
+INVALID_TOKEN("'\\u'")
+INVALID_TOKEN("'\\u0'")
+INVALID_TOKEN("'\\ua'")
+INVALID_TOKEN("'\\uab'")
+INVALID_TOKEN("'\\u01a'")
+INVALID_TOKEN("'\\uz'")
+INVALID_TOKEN("'\\u012z'")
+
+CHAR_LITERAL("'a'")
+INVALID_TOKEN("'") \ No newline at end of file
diff --git a/smali/src/test/resources/LexerTest/CommentTest.smali b/smali/src/test/resources/LexerTest/CommentTest.smali
new file mode 100644
index 00000000..dd246cbf
--- /dev/null
+++ b/smali/src/test/resources/LexerTest/CommentTest.smali
@@ -0,0 +1,6 @@
+#
+#abcd
+# abcd
+#0x1234
+0x1234 #0x1234
+invoke-virtual #invoke-virtual \ No newline at end of file
diff --git a/smali/src/test/resources/LexerTest/CommentTest.tokens b/smali/src/test/resources/LexerTest/CommentTest.tokens
new file mode 100644
index 00000000..5f781ade
--- /dev/null
+++ b/smali/src/test/resources/LexerTest/CommentTest.tokens
@@ -0,0 +1,6 @@
+LINE_COMMENT("#") WHITE_SPACE("\n")
+LINE_COMMENT("#abcd") WHITE_SPACE("\n")
+LINE_COMMENT("# abcd") WHITE_SPACE("\n")
+LINE_COMMENT("#0x1234") WHITE_SPACE("\n")
+INTEGER_LITERAL("0x1234") WHITE_SPACE(" ") LINE_COMMENT("#0x1234") WHITE_SPACE("\n")
+INSTRUCTION_FORMAT35c_METHOD("invoke-virtual") WHITE_SPACE(" ") LINE_COMMENT("#invoke-virtual") \ No newline at end of file
diff --git a/smali/src/test/resources/LexerTest/InstructionTest.smali b/smali/src/test/resources/LexerTest/InstructionTest.smali
new file mode 100644
index 00000000..b45de2db
--- /dev/null
+++ b/smali/src/test/resources/LexerTest/InstructionTest.smali
@@ -0,0 +1,198 @@
+goto
+return-void
+nop
+const/4
+move-result
+move-result-wide
+move-result-object
+move-exception
+return
+return-wide
+move
+move-wide
+move-object
+array-length
+neg-int
+not-int
+neg-long
+not-long
+neg-float
+neg-double
+int-to-long
+int-to-float
+int-to-double
+long-to-int
+long-to-float
+long-to-double
+float-to-int
+float-to-long
+float-to-double
+double-to-int
+double-to-long
+add-int/2addr
+sub-int/2addr
+mul-int/2addr
+div-int/2addr
+rem-int/2addr
+and-int/2addr
+or-int/2addr
+xor-int/2addr
+shl-int/2addr
+shr-int/2addr
+ushr-int/2addr
+add-long/2addr
+sub-long/2addr
+mul-long/2addr
+div-long/2addr
+rem-long/2addr
+and-long/2addr
+or-long/2addr
+xor-long/2addr
+shl-long/2addr
+shr-long/2addr
+ushr-long/2addr
+add-float/2addr
+sub-float/2addr
+mul-float/2addr
+div-float/2addr
+rem-float/2addr
+add-double/2addr
+goto/16
+sget
+sget-wide
+sget-object
+sget-boolean
+sget-byte
+sget-char
+sget-short
+sput
+const-string
+check-cast
+new-instance
+const-class
+const/high16
+const-wide/high16
+const/16
+const-wide/16
+if-eqz
+if-nez
+if-ltz
+if-gez
+if-gtz
+if-lez
+add-int/lit8
+rsub-int/lit8
+mul-int/lit8
+div-int/lit8
+rem-int/lit8
+and-int/lit8
+iget
+iget-wide
+iget-object
+iget-boolean
+iget-byte
+iget-char
+iget-short
+iput
+instance-of
+new-array
+iget-quick
+iget-wide-quick
+iget-object-quick
+iput-quick
+iput-wide-quick
+iput-object-quick
+rsub-int
+add-int/lit16
+mul-int/lit16
+div-int/lit16
+rem-int/lit16
+and-int/lit16
+or-int/lit16
+if-eq
+if-ne
+if-lt
+if-ge
+if-gt
+if-le
+move/from16
+move-wide/from16
+move-object/from16
+cmpl-float
+cmpg-float
+cmpl-double
+cmpg-double
+cmp-long
+aget
+aget-wide
+aget-object
+aget-boolean
+aget-byte
+aget-char
+aget-short
+aput
+aput-wide
+aput-object
+aput-boolean
+aput-byte
+aput-char
+aput-short
+add-int
+sub-int
+mul-int
+div-int
+rem-int
+and-int
+or-int
+xor-int
+shl-int
+shr-int
+ushr-int
+add-long
+sub-long
+mul-long
+div-long
+rem-long
+and-long
+or-long
+xor-long
+shl-long
+shr-long
+ushr-long
+add-float
+sub-float
+mul-float
+div-float
+rem-float
+add-double
+sub-double
+mul-double
+div-double
+goto/32
+const-string/jumbo
+const
+const-wide/32
+fill-array-data
+packed-switch
+sparse-switch
+move/16
+move-wide/16
+move-object/16
+invoke-virtual
+invoke-super
+invoke-direct
+invoke-static
+invoke-interface
+filled-new-array
+invoke-direct-empty
+execute-inline
+invoke-virtual-quick
+invoke-super-quick
+invoke-virtual/range
+invoke-super/range
+invoke-direct/range
+invoke-static/range
+filled-new-array/range
+invoke-virtual-quick/range
+invoke-super-quick/range
+const-wide \ No newline at end of file
diff --git a/smali/src/test/resources/LexerTest/InstructionTest.tokens b/smali/src/test/resources/LexerTest/InstructionTest.tokens
new file mode 100644
index 00000000..2ceaf528
--- /dev/null
+++ b/smali/src/test/resources/LexerTest/InstructionTest.tokens
@@ -0,0 +1,198 @@
+INSTRUCTION_FORMAT10t("goto")
+INSTRUCTION_FORMAT10x("return-void")
+INSTRUCTION_FORMAT10x("nop")
+INSTRUCTION_FORMAT11n("const/4")
+INSTRUCTION_FORMAT11x("move-result")
+INSTRUCTION_FORMAT11x("move-result-wide")
+INSTRUCTION_FORMAT11x("move-result-object")
+INSTRUCTION_FORMAT11x("move-exception")
+INSTRUCTION_FORMAT11x("return")
+INSTRUCTION_FORMAT11x("return-wide")
+INSTRUCTION_FORMAT12x_OR_ID("move")
+INSTRUCTION_FORMAT12x_OR_ID("move-wide")
+INSTRUCTION_FORMAT12x_OR_ID("move-object")
+INSTRUCTION_FORMAT12x_OR_ID("array-length")
+INSTRUCTION_FORMAT12x_OR_ID("neg-int")
+INSTRUCTION_FORMAT12x_OR_ID("not-int")
+INSTRUCTION_FORMAT12x_OR_ID("neg-long")
+INSTRUCTION_FORMAT12x_OR_ID("not-long")
+INSTRUCTION_FORMAT12x_OR_ID("neg-float")
+INSTRUCTION_FORMAT12x_OR_ID("neg-double")
+INSTRUCTION_FORMAT12x_OR_ID("int-to-long")
+INSTRUCTION_FORMAT12x_OR_ID("int-to-float")
+INSTRUCTION_FORMAT12x_OR_ID("int-to-double")
+INSTRUCTION_FORMAT12x_OR_ID("long-to-int")
+INSTRUCTION_FORMAT12x_OR_ID("long-to-float")
+INSTRUCTION_FORMAT12x_OR_ID("long-to-double")
+INSTRUCTION_FORMAT12x_OR_ID("float-to-int")
+INSTRUCTION_FORMAT12x_OR_ID("float-to-long")
+INSTRUCTION_FORMAT12x_OR_ID("float-to-double")
+INSTRUCTION_FORMAT12x_OR_ID("double-to-int")
+INSTRUCTION_FORMAT12x_OR_ID("double-to-long")
+INSTRUCTION_FORMAT12x("add-int/2addr")
+INSTRUCTION_FORMAT12x("sub-int/2addr")
+INSTRUCTION_FORMAT12x("mul-int/2addr")
+INSTRUCTION_FORMAT12x("div-int/2addr")
+INSTRUCTION_FORMAT12x("rem-int/2addr")
+INSTRUCTION_FORMAT12x("and-int/2addr")
+INSTRUCTION_FORMAT12x("or-int/2addr")
+INSTRUCTION_FORMAT12x("xor-int/2addr")
+INSTRUCTION_FORMAT12x("shl-int/2addr")
+INSTRUCTION_FORMAT12x("shr-int/2addr")
+INSTRUCTION_FORMAT12x("ushr-int/2addr")
+INSTRUCTION_FORMAT12x("add-long/2addr")
+INSTRUCTION_FORMAT12x("sub-long/2addr")
+INSTRUCTION_FORMAT12x("mul-long/2addr")
+INSTRUCTION_FORMAT12x("div-long/2addr")
+INSTRUCTION_FORMAT12x("rem-long/2addr")
+INSTRUCTION_FORMAT12x("and-long/2addr")
+INSTRUCTION_FORMAT12x("or-long/2addr")
+INSTRUCTION_FORMAT12x("xor-long/2addr")
+INSTRUCTION_FORMAT12x("shl-long/2addr")
+INSTRUCTION_FORMAT12x("shr-long/2addr")
+INSTRUCTION_FORMAT12x("ushr-long/2addr")
+INSTRUCTION_FORMAT12x("add-float/2addr")
+INSTRUCTION_FORMAT12x("sub-float/2addr")
+INSTRUCTION_FORMAT12x("mul-float/2addr")
+INSTRUCTION_FORMAT12x("div-float/2addr")
+INSTRUCTION_FORMAT12x("rem-float/2addr")
+INSTRUCTION_FORMAT12x("add-double/2addr")
+INSTRUCTION_FORMAT20t("goto/16")
+INSTRUCTION_FORMAT21c_FIELD("sget")
+INSTRUCTION_FORMAT21c_FIELD("sget-wide")
+INSTRUCTION_FORMAT21c_FIELD("sget-object")
+INSTRUCTION_FORMAT21c_FIELD("sget-boolean")
+INSTRUCTION_FORMAT21c_FIELD("sget-byte")
+INSTRUCTION_FORMAT21c_FIELD("sget-char")
+INSTRUCTION_FORMAT21c_FIELD("sget-short")
+INSTRUCTION_FORMAT21c_FIELD("sput")
+INSTRUCTION_FORMAT21c_STRING("const-string")
+INSTRUCTION_FORMAT21c_TYPE("check-cast")
+INSTRUCTION_FORMAT21c_TYPE("new-instance")
+INSTRUCTION_FORMAT21c_TYPE("const-class")
+INSTRUCTION_FORMAT21h("const/high16")
+INSTRUCTION_FORMAT21h("const-wide/high16")
+INSTRUCTION_FORMAT21s("const/16")
+INSTRUCTION_FORMAT21s("const-wide/16")
+INSTRUCTION_FORMAT21t("if-eqz")
+INSTRUCTION_FORMAT21t("if-nez")
+INSTRUCTION_FORMAT21t("if-ltz")
+INSTRUCTION_FORMAT21t("if-gez")
+INSTRUCTION_FORMAT21t("if-gtz")
+INSTRUCTION_FORMAT21t("if-lez")
+INSTRUCTION_FORMAT22b("add-int/lit8")
+INSTRUCTION_FORMAT22b("rsub-int/lit8")
+INSTRUCTION_FORMAT22b("mul-int/lit8")
+INSTRUCTION_FORMAT22b("div-int/lit8")
+INSTRUCTION_FORMAT22b("rem-int/lit8")
+INSTRUCTION_FORMAT22b("and-int/lit8")
+INSTRUCTION_FORMAT22c_FIELD("iget")
+INSTRUCTION_FORMAT22c_FIELD("iget-wide")
+INSTRUCTION_FORMAT22c_FIELD("iget-object")
+INSTRUCTION_FORMAT22c_FIELD("iget-boolean")
+INSTRUCTION_FORMAT22c_FIELD("iget-byte")
+INSTRUCTION_FORMAT22c_FIELD("iget-char")
+INSTRUCTION_FORMAT22c_FIELD("iget-short")
+INSTRUCTION_FORMAT22c_FIELD("iput")
+INSTRUCTION_FORMAT22c_TYPE("instance-of")
+INSTRUCTION_FORMAT22c_TYPE("new-array")
+INSTRUCTION_FORMAT22cs_FIELD("iget-quick")
+INSTRUCTION_FORMAT22cs_FIELD("iget-wide-quick")
+INSTRUCTION_FORMAT22cs_FIELD("iget-object-quick")
+INSTRUCTION_FORMAT22cs_FIELD("iput-quick")
+INSTRUCTION_FORMAT22cs_FIELD("iput-wide-quick")
+INSTRUCTION_FORMAT22cs_FIELD("iput-object-quick")
+INSTRUCTION_FORMAT22s_OR_ID("rsub-int")
+INSTRUCTION_FORMAT22s("add-int/lit16")
+INSTRUCTION_FORMAT22s("mul-int/lit16")
+INSTRUCTION_FORMAT22s("div-int/lit16")
+INSTRUCTION_FORMAT22s("rem-int/lit16")
+INSTRUCTION_FORMAT22s("and-int/lit16")
+INSTRUCTION_FORMAT22s("or-int/lit16")
+INSTRUCTION_FORMAT22t("if-eq")
+INSTRUCTION_FORMAT22t("if-ne")
+INSTRUCTION_FORMAT22t("if-lt")
+INSTRUCTION_FORMAT22t("if-ge")
+INSTRUCTION_FORMAT22t("if-gt")
+INSTRUCTION_FORMAT22t("if-le")
+INSTRUCTION_FORMAT22x("move/from16")
+INSTRUCTION_FORMAT22x("move-wide/from16")
+INSTRUCTION_FORMAT22x("move-object/from16")
+INSTRUCTION_FORMAT23x("cmpl-float")
+INSTRUCTION_FORMAT23x("cmpg-float")
+INSTRUCTION_FORMAT23x("cmpl-double")
+INSTRUCTION_FORMAT23x("cmpg-double")
+INSTRUCTION_FORMAT23x("cmp-long")
+INSTRUCTION_FORMAT23x("aget")
+INSTRUCTION_FORMAT23x("aget-wide")
+INSTRUCTION_FORMAT23x("aget-object")
+INSTRUCTION_FORMAT23x("aget-boolean")
+INSTRUCTION_FORMAT23x("aget-byte")
+INSTRUCTION_FORMAT23x("aget-char")
+INSTRUCTION_FORMAT23x("aget-short")
+INSTRUCTION_FORMAT23x("aput")
+INSTRUCTION_FORMAT23x("aput-wide")
+INSTRUCTION_FORMAT23x("aput-object")
+INSTRUCTION_FORMAT23x("aput-boolean")
+INSTRUCTION_FORMAT23x("aput-byte")
+INSTRUCTION_FORMAT23x("aput-char")
+INSTRUCTION_FORMAT23x("aput-short")
+INSTRUCTION_FORMAT23x("add-int")
+INSTRUCTION_FORMAT23x("sub-int")
+INSTRUCTION_FORMAT23x("mul-int")
+INSTRUCTION_FORMAT23x("div-int")
+INSTRUCTION_FORMAT23x("rem-int")
+INSTRUCTION_FORMAT23x("and-int")
+INSTRUCTION_FORMAT23x("or-int")
+INSTRUCTION_FORMAT23x("xor-int")
+INSTRUCTION_FORMAT23x("shl-int")
+INSTRUCTION_FORMAT23x("shr-int")
+INSTRUCTION_FORMAT23x("ushr-int")
+INSTRUCTION_FORMAT23x("add-long")
+INSTRUCTION_FORMAT23x("sub-long")
+INSTRUCTION_FORMAT23x("mul-long")
+INSTRUCTION_FORMAT23x("div-long")
+INSTRUCTION_FORMAT23x("rem-long")
+INSTRUCTION_FORMAT23x("and-long")
+INSTRUCTION_FORMAT23x("or-long")
+INSTRUCTION_FORMAT23x("xor-long")
+INSTRUCTION_FORMAT23x("shl-long")
+INSTRUCTION_FORMAT23x("shr-long")
+INSTRUCTION_FORMAT23x("ushr-long")
+INSTRUCTION_FORMAT23x("add-float")
+INSTRUCTION_FORMAT23x("sub-float")
+INSTRUCTION_FORMAT23x("mul-float")
+INSTRUCTION_FORMAT23x("div-float")
+INSTRUCTION_FORMAT23x("rem-float")
+INSTRUCTION_FORMAT23x("add-double")
+INSTRUCTION_FORMAT23x("sub-double")
+INSTRUCTION_FORMAT23x("mul-double")
+INSTRUCTION_FORMAT23x("div-double")
+INSTRUCTION_FORMAT30t("goto/32")
+INSTRUCTION_FORMAT31c("const-string/jumbo")
+INSTRUCTION_FORMAT31i_OR_ID("const")
+INSTRUCTION_FORMAT31i("const-wide/32")
+INSTRUCTION_FORMAT31t("fill-array-data")
+INSTRUCTION_FORMAT31t("packed-switch")
+INSTRUCTION_FORMAT31t("sparse-switch")
+INSTRUCTION_FORMAT32x("move/16")
+INSTRUCTION_FORMAT32x("move-wide/16")
+INSTRUCTION_FORMAT32x("move-object/16")
+INSTRUCTION_FORMAT35c_METHOD("invoke-virtual")
+INSTRUCTION_FORMAT35c_METHOD("invoke-super")
+INSTRUCTION_FORMAT35c_METHOD("invoke-direct")
+INSTRUCTION_FORMAT35c_METHOD("invoke-static")
+INSTRUCTION_FORMAT35c_METHOD("invoke-interface")
+INSTRUCTION_FORMAT35c_TYPE("filled-new-array")
+INSTRUCTION_FORMAT35s_METHOD("invoke-direct-empty")
+INSTRUCTION_FORMAT35ms_METHOD("execute-inline")
+INSTRUCTION_FORMAT35ms_METHOD("invoke-virtual-quick")
+INSTRUCTION_FORMAT35ms_METHOD("invoke-super-quick")
+INSTRUCTION_FORMAT3rc_METHOD("invoke-virtual/range")
+INSTRUCTION_FORMAT3rc_METHOD("invoke-super/range")
+INSTRUCTION_FORMAT3rc_METHOD("invoke-direct/range")
+INSTRUCTION_FORMAT3rc_METHOD("invoke-static/range")
+INSTRUCTION_FORMAT3rc_TYPE("filled-new-array/range")
+INSTRUCTION_FORMAT3rms_METHOD("invoke-virtual-quick/range")
+INSTRUCTION_FORMAT3rms_METHOD("invoke-super-quick/range")
+INSTRUCTION_FORMAT51l("const-wide") \ No newline at end of file
diff --git a/smali/src/test/resources/LexerTest/MiscTest.smali b/smali/src/test/resources/LexerTest/MiscTest.smali
new file mode 100644
index 00000000..62f01f2d
--- /dev/null
+++ b/smali/src/test/resources/LexerTest/MiscTest.smali
@@ -0,0 +1,60 @@
+true
+false
+null
+p0
+p90
+pab
+v0
+v90
+vab
+
+truefalse
+
+build
+runtime
+system
+
+public
+private
+protected
+static
+final
+synchronized
+bridge
+varargs
+native
+abstract
+strictfp
+synthetic
+constructor
+declared-synchronized
+interface
+enum
+annotation
+volatile
+transient
+
+vtable@0xABCD
+vtable@0x0123
+vtable@0x0123ABCD
+
+field@0xABCD
+field@0x0123
+field@0x0123ABCD
+
+vtable@
+vtable@zzz
+vtable@abcd
+field@
+field@zzz
+field@abcd
+
++0
++10
++01
++0777
++0x1234ABC
++1234
+
++08
++ \ No newline at end of file
diff --git a/smali/src/test/resources/LexerTest/MiscTest.tokens b/smali/src/test/resources/LexerTest/MiscTest.tokens
new file mode 100644
index 00000000..974ae4c2
--- /dev/null
+++ b/smali/src/test/resources/LexerTest/MiscTest.tokens
@@ -0,0 +1,60 @@
+BOOL_LITERAL("true")
+BOOL_LITERAL("false")
+NULL_LITERAL("null")
+REGISTER("p0")
+REGISTER("p90")
+SIMPLE_NAME("pab")
+REGISTER("v0")
+REGISTER("v90")
+SIMPLE_NAME("vab")
+
+SIMPLE_NAME("truefalse")
+
+ANNOTATION_VISIBILITY("build")
+ANNOTATION_VISIBILITY("runtime")
+ANNOTATION_VISIBILITY("system")
+
+ACCESS_SPEC("public")
+ACCESS_SPEC("private")
+ACCESS_SPEC("protected")
+ACCESS_SPEC("static")
+ACCESS_SPEC("final")
+ACCESS_SPEC("synchronized")
+ACCESS_SPEC("bridge")
+ACCESS_SPEC("varargs")
+ACCESS_SPEC("native")
+ACCESS_SPEC("abstract")
+ACCESS_SPEC("strictfp")
+ACCESS_SPEC("synthetic")
+ACCESS_SPEC("constructor")
+ACCESS_SPEC("declared-synchronized")
+ACCESS_SPEC("interface")
+ACCESS_SPEC("enum")
+ACCESS_SPEC("annotation")
+ACCESS_SPEC("volatile")
+ACCESS_SPEC("transient")
+
+VTABLE_OFFSET("vtable@0xABCD")
+VTABLE_OFFSET("vtable@0x0123")
+VTABLE_OFFSET("vtable@0x0123ABCD")
+
+FIELD_OFFSET("field@0xABCD")
+FIELD_OFFSET("field@0x0123")
+FIELD_OFFSET("field@0x0123ABCD")
+
+SIMPLE_NAME("vtable") INVALID_TOKEN("@")
+SIMPLE_NAME("vtable") INVALID_TOKEN("@") SIMPLE_NAME("zzz")
+SIMPLE_NAME("vtable") INVALID_TOKEN("@") SIMPLE_NAME("abcd")
+SIMPLE_NAME("field") INVALID_TOKEN("@")
+SIMPLE_NAME("field") INVALID_TOKEN("@") SIMPLE_NAME("zzz")
+SIMPLE_NAME("field") INVALID_TOKEN("@") SIMPLE_NAME("abcd")
+
+OFFSET("+0")
+OFFSET("+10")
+OFFSET("+01")
+OFFSET("+0777")
+OFFSET("+0x1234ABC")
+OFFSET("+1234")
+
+OFFSET("+0") INTEGER_LITERAL("8")
+INVALID_TOKEN("+") \ No newline at end of file
diff --git a/smali/src/test/resources/LexerTest/StringLiteralTest.smali b/smali/src/test/resources/LexerTest/StringLiteralTest.smali
new file mode 100644
index 00000000..d4eaba5a
--- /dev/null
+++ b/smali/src/test/resources/LexerTest/StringLiteralTest.smali
@@ -0,0 +1,43 @@
+""
+" "
+" "
+" "
+"aaaaaaaaaaaaaaaaaaaaaaaaaa"
+"\"\"\"\\"
+"abcd1234"
+"abcd 1234"
+"ABCD""ABCD"
+"1234"
+"\n"
+"\r"
+"\t"
+"\b"
+"\f"
+"\u0030"
+"\uABCD"
+"\uabcd"
+"\\"
+"\'"
+"'"
+"\""
+"\n\r\t\b\f\u0030\uABCD\"\\\''\""
+"\uABCD01234"
+"\uABCDEFGHIJK"
+"\u12341234"
+"\\\\\\\\\\\\\\\""
+
+"a"a"
+"\a"
+"
+"
+"
+"\u"
+"\u0"
+"\ua"
+"\uab"
+"\u01a"
+"\uz"
+"\u012z\u\u\u\uz\""
+
+"abcd"
+" \ No newline at end of file
diff --git a/smali/src/test/resources/LexerTest/StringLiteralTest.tokens b/smali/src/test/resources/LexerTest/StringLiteralTest.tokens
new file mode 100644
index 00000000..474668c5
--- /dev/null
+++ b/smali/src/test/resources/LexerTest/StringLiteralTest.tokens
@@ -0,0 +1,43 @@
+STRING_LITERAL("\"\"")
+STRING_LITERAL("\" \"")
+STRING_LITERAL("\" \"")
+STRING_LITERAL("\" \"")
+STRING_LITERAL("\"aaaaaaaaaaaaaaaaaaaaaaaaaa\"")
+STRING_LITERAL("\"\"\"\"\\\"")
+STRING_LITERAL("\"abcd1234\"")
+STRING_LITERAL("\"abcd 1234\"")
+STRING_LITERAL("\"ABCD\"") STRING_LITERAL("\"ABCD\"")
+STRING_LITERAL("\"1234\"")
+STRING_LITERAL("\"\n\"")
+STRING_LITERAL("\"\r\"")
+STRING_LITERAL("\"\t\"")
+STRING_LITERAL("\"\b\"")
+STRING_LITERAL("\"\f\"")
+STRING_LITERAL("\"\u0030\"")
+STRING_LITERAL("\"\uABCD\"")
+STRING_LITERAL("\"\uabcd\"")
+STRING_LITERAL("\"\\\"")
+STRING_LITERAL("\"\'\"")
+STRING_LITERAL("\"'\"")
+STRING_LITERAL("\"\"\"")
+STRING_LITERAL("\"\n\r\t\b\f\u0030\uABCD\"\\\''\"\"")
+STRING_LITERAL("\"\uABCD01234\"")
+STRING_LITERAL("\"\uABCDEFGHIJK\"")
+STRING_LITERAL("\"\u12341234\"")
+STRING_LITERAL("\"\\\\\\\\\\\\\\\"\"")
+
+STRING_LITERAL("\"a\"") SIMPLE_NAME("a") INVALID_TOKEN("\"")
+INVALID_TOKEN("\"\\a\"")
+INVALID_TOKEN("\"")
+INVALID_TOKEN("\"")
+INVALID_TOKEN("\"")
+INVALID_TOKEN("\"\\u\"")
+INVALID_TOKEN("\"\\u0\"")
+INVALID_TOKEN("\"\\ua\"")
+INVALID_TOKEN("\"\\uab\"")
+INVALID_TOKEN("\"\\u01a\"")
+INVALID_TOKEN("\"\\uz\"")
+INVALID_TOKEN("\"\\u012z\\u\\u\\u\\uz\"\"")
+
+STRING_LITERAL("\"abcd\"")
+INVALID_TOKEN("\"") \ No newline at end of file
diff --git a/smali/src/test/resources/LexerTest/SymbolTest.smali b/smali/src/test/resources/LexerTest/SymbolTest.smali
new file mode 100644
index 00000000..6b11061b
--- /dev/null
+++ b/smali/src/test/resources/LexerTest/SymbolTest.smali
@@ -0,0 +1,19 @@
+..
+->
+=
+:
+,
+{}()
+{ } ( )
+{
+}
+(
+)
+
+
+
+
+
+
+
+ \ No newline at end of file
diff --git a/smali/src/test/resources/LexerTest/SymbolTest.tokens b/smali/src/test/resources/LexerTest/SymbolTest.tokens
new file mode 100644
index 00000000..009c9324
--- /dev/null
+++ b/smali/src/test/resources/LexerTest/SymbolTest.tokens
@@ -0,0 +1,12 @@
+DOTDOT("..") WHITE_SPACE("\n")
+ARROW("->") WHITE_SPACE("\n")
+EQUAL("=") WHITE_SPACE("\n")
+COLON(":") WHITE_SPACE("\n")
+COMMA(",") WHITE_SPACE("\n")
+OPEN_BRACE("{") CLOSE_BRACE("}") OPEN_PAREN("(") CLOSE_PAREN(")") WHITE_SPACE("\n")
+OPEN_BRACE("{") WHITE_SPACE(" ") CLOSE_BRACE("}") WHITE_SPACE(" ") OPEN_PAREN("(") WHITE_SPACE(" ") CLOSE_PAREN(")") WHITE_SPACE("\n")
+OPEN_BRACE("{") WHITE_SPACE("\n")
+CLOSE_BRACE("}") WHITE_SPACE("\n")
+OPEN_PAREN("(") WHITE_SPACE("\n")
+CLOSE_PAREN(")")
+WHITE_SPACE("\n \n\t\n\t \n\t \n\t \t\n \t\n \t\n\r\r") \ No newline at end of file
diff --git a/smali/src/test/resources/LexerTest/TypeAndIdentifierTest.smali b/smali/src/test/resources/LexerTest/TypeAndIdentifierTest.smali
new file mode 100644
index 00000000..7fd9b65a
--- /dev/null
+++ b/smali/src/test/resources/LexerTest/TypeAndIdentifierTest.smali
@@ -0,0 +1,48 @@
+Z
+B
+S
+C
+I
+J
+F
+D
+V
+
+Ljava/lang/String;
+LI;
+LV;
+LI/I/I;
+
+[Z
+[B
+[S
+[C
+[I
+[J
+[F
+[D
+[Ljava/lang/String;
+[LI/I/I;
+
+IIIII
+ZBSCIJFD
+ILa;[La;[I
+Ljava/lang/String;Ljava/lang/String;
+[I[I[I
+[I[Z
+[I[Ljava/lang/String;
+
+<init>
+<clinit>
+
+Ljava/lang/String
+L;
+LI
+L[Ljava/lang/String;
+
+[
+[V
+[java/lang/String;
+[;
+
+<linit> \ No newline at end of file
diff --git a/smali/src/test/resources/LexerTest/TypeAndIdentifierTest.tokens b/smali/src/test/resources/LexerTest/TypeAndIdentifierTest.tokens
new file mode 100644
index 00000000..531622e9
--- /dev/null
+++ b/smali/src/test/resources/LexerTest/TypeAndIdentifierTest.tokens
@@ -0,0 +1,48 @@
+PRIMITIVE_TYPE("Z")
+PRIMITIVE_TYPE("B")
+PRIMITIVE_TYPE("S")
+PRIMITIVE_TYPE("C")
+PRIMITIVE_TYPE("I")
+PRIMITIVE_TYPE("J")
+PRIMITIVE_TYPE("F")
+PRIMITIVE_TYPE("D")
+VOID_TYPE("V")
+
+CLASS_DESCRIPTOR("Ljava/lang/String;")
+CLASS_DESCRIPTOR("LI;")
+CLASS_DESCRIPTOR("LV;")
+CLASS_DESCRIPTOR("LI/I/I;")
+
+ARRAY_DESCRIPTOR("[Z")
+ARRAY_DESCRIPTOR("[B")
+ARRAY_DESCRIPTOR("[S")
+ARRAY_DESCRIPTOR("[C")
+ARRAY_DESCRIPTOR("[I")
+ARRAY_DESCRIPTOR("[J")
+ARRAY_DESCRIPTOR("[F")
+ARRAY_DESCRIPTOR("[D")
+ARRAY_DESCRIPTOR("[Ljava/lang/String;")
+ARRAY_DESCRIPTOR("[LI/I/I;")
+
+PARAM_LIST_OR_ID("IIIII")
+PARAM_LIST_OR_ID("ZBSCIJFD")
+PARAM_LIST("ILa;[La;[I")
+PARAM_LIST("Ljava/lang/String;Ljava/lang/String;")
+PARAM_LIST("[I[I[I")
+PARAM_LIST("[I[Z")
+PARAM_LIST("[I[Ljava/lang/String;")
+
+METHOD_NAME("<init>")
+METHOD_NAME("<clinit>")
+
+SIMPLE_NAME("Ljava") INVALID_TOKEN("/") SIMPLE_NAME("lang") INVALID_TOKEN("/") SIMPLE_NAME("String")
+SIMPLE_NAME("L") INVALID_TOKEN(";")
+SIMPLE_NAME("LI")
+SIMPLE_NAME("L") ARRAY_DESCRIPTOR("[Ljava/lang/String;")
+
+INVALID_TOKEN("[")
+INVALID_TOKEN("[") VOID_TYPE("V")
+INVALID_TOKEN("[") SIMPLE_NAME("java") INVALID_TOKEN("/") SIMPLE_NAME("lang") INVALID_TOKEN("/") SIMPLE_NAME("String") INVALID_TOKEN(";")
+INVALID_TOKEN("[") INVALID_TOKEN(";")
+
+INVALID_TOKEN("<") SIMPLE_NAME("linit") INVALID_TOKEN(">") \ No newline at end of file