Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/vbscript/tests/run.c | 99 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+)
diff --git a/dlls/vbscript/tests/run.c b/dlls/vbscript/tests/run.c index 15a8f10..87540a3 100644 --- a/dlls/vbscript/tests/run.c +++ b/dlls/vbscript/tests/run.c @@ -2077,6 +2077,104 @@ static void test_gc(void) IActiveScriptParse_Release(parser); }
+static void test_end_parse_without_nl(void) +{ + static const char *invalid[] = + { + /* If...End If */ + "If 0 > 1 Then\n" + " x = 0 End If\n", + + /* While...End While */ + "While False\n" + " x = 0 End While\n", + + /* While...Wend */ + "While False\n" + " x = 0 Wend\n", + + /* Do While...Loop */ + "Do While False\n" + " x = 0 Loop\n", + + /* Do Until...Loop */ + "Do Until True\n" + " x = 0 Loop\n", + + /* Do...Loop While */ + "Do\n" + " x = 0 Loop While False\n", + + /* Do...Loop Until */ + "Do\n" + " x = 0 Loop Until True\n", + + /* Select...End Select */ + "x = False\n" + "Select Case 42\n" + " Case 0\n" + " Call ok(False, "unexpected case")\n" + " Case 42\n" + " x = True End Select\n" + "Call ok(x, "wrong case")\n", + + /* Class...End Class (empty) */ + "Class C End Class" + }; + static const char *valid[] = + { + /* Sub...End Sub */ + "Sub test\n" + " x = 42 End Sub\n", + + /* Sub...End Sub (with a Call) */ + "Sub test\n" + " x = 42\n" + " Call ok(x = 42, "x = " & x)End Sub\n" + "Call test()", + + /* Function...End Function (with a Call) */ + "Function test(x)\n" + " Call ok(x > 0, "x = " & x)End Function\n" + "test(1)", + + /* Class...End Class (with storage identifier) */ + "Class C\n" + " Public x End Class\n", + + /* Class...End Class (with Dim decl) */ + "Class C\n" + " Dim x End Class\n", + + /* Class...End Class (with Function decl) */ + "Class C\n" + " Function test(ByVal x)\n" + " x = 0 End Function End Class\n", + + /* Property...End Property */ + "Class C\n" + " Public x\n" + " Public default Property Get defprop\n" + " defprop = x End Property End Class\n" + }; + HRESULT hres; + UINT i; + + for (i = 0; i < ARRAY_SIZE(invalid); i++) + { + SET_EXPECT(OnScriptError); + hres = parse_script_ar(invalid[i]); + ok(FAILED(hres), "[%u] script did not fail\n", i); + todo_wine CHECK_CALLED(OnScriptError); + } + + for (i = 0; i < ARRAY_SIZE(valid); i++) + { + hres = parse_script_ar(valid[i]); + ok(SUCCEEDED(hres), "[%u] script failed\n", i); + } +} + static void test_msgbox(void) { HRESULT hres; @@ -2499,6 +2597,7 @@ static void run_tests(void)
test_procedures(); test_gc(); + test_end_parse_without_nl(); test_msgbox(); test_parse_context(); }