public void TestStripComments() { // Use a delegate just so things fit on one line. var strip = new StripComments(StoredProcedure.StripComments); WVPASSEQ(strip("Hi"), "Hi"); WVPASSEQ(strip("--foo"), ""); WVPASSEQ(strip("--foo\nHi"), "\nHi"); WVPASSEQ(strip("Hi\n--foo"), "Hi\n"); WVPASSEQ(strip("Hi\n--foo\nThere"), "Hi\n\nThere"); WVPASSEQ(strip("--foo"), ""); WVPASSEQ(strip("/*foo*/"), ""); WVPASSEQ(strip("/*foo\nbar*/"), ""); WVPASSEQ(strip("Hi/*foo*/"), "Hi"); WVPASSEQ(strip("Hi/*foo\nbar*/There"), "HiThere"); WVPASSEQ(strip("Hi\n/* foo\nbar */\nThere"), "Hi\n\nThere"); WVPASSEQ(strip("Hi--asdf/*\nThere/*foo*/"), "Hi\nThere"); // Note: this is a bit fishy, but it's how the Perl version worked. WVPASSEQ(strip("Hi/*foo\n--asdf*/There"), "Hi/*foo\n"); }
public void StripCppComments() { const string str_in = "123// comment \n" + "456/* block */789 \n" + "// many \n" + "// lines \n" + "// \"string\" \n" + "/* \"string\" */ \n" + "\"string \\\" /*a*/ //b\" \n" + "/not a comment\n" + "/*\n" + " more lines\n" + "*/\n" + "/*back to*//*back*/ comment\n"; const string str_out = "123\n" + "456789 \n" + "\n" + "\n" + "\n" + " \n" + "\"string \\\" /*a*/ //b\" \n" + "/not a comment\n" + "\n" + " comment\n"; var src = new StringSrc(str_in); var strip = new StripComments(src); for (int i = 0; i != str_out.Length; ++i, strip.Next()) { if (str_out[i] == strip.Peek) { continue; } Assert.Equal(str_out[i], strip.Peek); } Assert.Equal('\0', strip.Peek); }
public void StripAsmComments() { const string str_in = "; asm comments start with a ; character\r\n" + "mov 43 2\r\n" + "ldr $a 2 ; imaginary asm"; const string str_out = "\r\n" + "mov 43 2\r\n" + "ldr $a 2 "; var src = new StringSrc(str_in); var strip = new StripComments(src, comment_patterns: new InComment.Patterns(";", "\r\n", "", "")); for (int i = 0; i != str_out.Length; ++i, strip.Next()) { if (str_out[i] == strip.Peek) { continue; } Assert.Equal(str_out[i], strip.Peek); } Assert.Equal('\0', strip.Peek); }