Index: tests/enum_tests/.expect/input.txt
===================================================================
--- tests/enum_tests/.expect/input.txt	(revision 8705a11c8492eccab09e0fae1cbc4c1551beace8)
+++ tests/enum_tests/.expect/input.txt	(revision d92bc9762a013bcad8f7862bd2622befd4a27254)
@@ -1,39 +1,16 @@
-BBB = 3
-AB = 6
-AAA = 4
-AB = 6
-BBB = 3
-AAA = 4
-AB = 6
-AA = 5
-B = 7
-BBB = 3
-AAA = 4
-AA = 5
-AB = 6
-B = 7
-BBB = 3
-AAA = 4
-AA = 5
-AB = 6
-B = 7
-AAA = 4
-B = 7
-CB = 8
-AC = 9
-CB = 8
-AC = 9
-BBB = 3
-AAA = 4
-AA = 5
-missing data
-AAA = 4
-B = 7
-CB = 8
-AC = 9
-CB = 8
-AC = 9
-BBB = 3
-AAA = 4
-AA = 5
-missing data
+BBB AAA AA AB B BBB AAA AAA missing data
+BBB AAA AAA AB B
+
+BBB AAA AA AB B BBB AAA AAA missing data
+BBB AAA AAA AB B
+
+A B BB AB BA AA AAA ABA AAB BBB BBA BAB
+BAB BBA BBB AAB ABA AAA AA BA AB BB B A
+BAB BBA BB AAB ABA AA AAA BA AB B A BBB
+
+A B BB AB BA AA AAA ABA AAB BBB BBA BAB
+BAB BBA BBB AAB ABA AAA AA BA AB BB B A
+BAB BBA BB AAB ABA AA AAA BA AB B A BBB
+
+BBB = 3 AB = 6 AAA = 4 AB = 6 BBB = 3 AAA = 4 AB = 6 AA = 5 B = 7 BBB = 3 AAA = 4 AA = 5 AB = 6 B = 7 BBB = 3 AAA = 4 AA = 5 AB = 6 B = 7 AAA = 4 B = 7 CB = 8 AC = 9 CB = 8 AC = 9 BBB = 3 AAA = 4 AA = 5 missing data
+AAA = 4 B = 7 CB = 8 AC = 9 CB = 8 AC = 9 BBB = 3 AAA = 4 AA = 5 missing data
Index: tests/enum_tests/.in/input.txt
===================================================================
--- tests/enum_tests/.in/input.txt	(revision 8705a11c8492eccab09e0fae1cbc4c1551beace8)
+++ tests/enum_tests/.in/input.txt	(revision d92bc9762a013bcad8f7862bd2622befd4a27254)
@@ -1,2 +1,18 @@
+BBB AAA AA AB B
+BBBAAAAAABB
+BBBAAAAAAABB
+
+BBB AAA AA AB B
+BBBAAAAAABB
+BBBAAAAAAABB
+
+A B BB AB BA AA AAA ABA AAB BBB BBA BAB
+BAB BBA BBB AAB ABA AAA AA BA AB BB B A
+BAB BBA BB AAB ABA AA AAA BA AB B A BBB
+
+A B BB AB BA AA AAA ABA AAB BBB BBA BAB
+BAB BBA BBB AAB ABA AAA AA BA AB BB B A
+BAB BBA BB AAB ABA AA AAA BA AB B A BBB
+
 BBBABAAAAB
 BBBAAAABAAB
Index: tests/enum_tests/input.cfa
===================================================================
--- tests/enum_tests/input.cfa	(revision 8705a11c8492eccab09e0fae1cbc4c1551beace8)
+++ tests/enum_tests/input.cfa	(revision d92bc9762a013bcad8f7862bd2622befd4a27254)
@@ -2,18 +2,103 @@
 
 int main() {
-	enum(int) E { BBB = 3, AAA, AA, AB, B, CB, AC };
-	E e;
+	{ // enumerators small to large
+		enum(int) E { B, AB, AA, AAA, BBB };
+		E e;
 
-	try {
-		for () {
-			try {
-				sin | e;
-			} catch( missing_data * ) {
-				sout | "missing data";
-				continue;								// try again
-			} // try
-			sout | e | "= " | value( e );
-		} // for
-	} catch( end_of_file * ) {
-	} // try
+		try {
+			for ( 14 ) {								// eums in input
+				try {
+					sin | e;
+				} catch( missing_data * ) {
+					sout | "missing data";
+					continue;							// try again
+				} // try
+				sout | e | nonl;
+			} // for
+		} catch( end_of_file * ) {
+			abort( "enum test failure" );
+		} // try
+		sout | nl;
+	}
+	sout | nl;
+	{ // enumerators large to small
+		enum(int) E { BBB, AAA, AA, AB, B };
+		E e;
+
+		try {
+			for ( 14 ) {								// eums in input
+				try {
+					sin | e;
+				} catch( missing_data * ) {
+					sout | "missing data";
+					continue;							// try again
+				} // try
+				sout | e | nonl;
+			} // for
+		} catch( end_of_file * ) {
+			abort( "enum test failure" );
+		} // try
+		sout | nl | nl;
+	}
+	{ // enumerators small to large, overlapping patterns
+		enum(int) E { A, B, BB, AB, BA, AA, AAA, ABA, AAB, BBB, BBA, BAB };
+		E e;
+
+		try {
+			for ( 3 ) {									// N rows
+				for ( countof( E ) ) {					// eums in input
+					try {
+						sin | e;
+					} catch( missing_data * ) {
+						sout | "missing data";
+						continue;						// try again
+					} // try
+					sout | e | nonl;
+				} // for
+				sout | nl;
+			} // for
+		} catch( end_of_file * ) {
+			abort( "enum test failure" );
+		} // try
+		sout | nl;
+	}
+	{ // enumerators large to small, overlapping patterns
+		enum(int) E { BAB, BBA, BBB, AAB, ABA, AAA, AA, BA, AB, BB, B, A };
+		E e;
+
+		try {
+			for ( 3 ) {									// N rows
+				for ( countof( E ) ) {					// eums in input
+					try {
+						sin | e;
+					} catch( missing_data * ) {
+						sout | "missing data";
+						continue;						// try again
+					} // try
+					sout | e | nonl;
+				} // for
+				sout | nl;
+			} // for
+		} catch( end_of_file * ) {
+			abort( "enum test failure" );
+		} // try
+		sout | nl;
+	}
+	{ // general, end of file
+		enum(int) E { BBB = 3, AAA, AA, AB, B, CB, AC };
+		E e;
+
+		try {
+			for () {
+				try {
+					sin | e;
+				} catch( missing_data * ) {
+					sout | "missing data";
+					continue;							// try again
+				} // try
+				sout | e | "= " | value( e ) | nonl;
+			} // for
+		} catch( end_of_file * ) {
+		} // try
+	}
 } // main
