from cpp11_raw_string_literals import * import inspect if cvar.L != 100: raise RuntimeError if cvar.u8 != 100: raise RuntimeError if cvar.u != 100: raise RuntimeError if UStruct.U != 100: raise RuntimeError if cvar.R != 100: raise RuntimeError if cvar.LR != 100: raise RuntimeError if cvar.u8R != 100: raise RuntimeError if cvar.uR != 100: raise RuntimeError if URStruct.UR != 100: raise RuntimeError if cvar.aa != "Wide string": raise RuntimeError if cvar.bb != "UTF-8 string": raise RuntimeError(cvar.wide) if cvar.xx != ")I'm an \"ascii\" \\ string.": raise RuntimeError(cvar.xx) if cvar.ee != ")I'm an \"ascii\" \\ string.": raise RuntimeError(cvar.ee) if cvar.ff != "I'm a \"raw wide\" \\ string.": raise RuntimeError(cvar.ff) if cvar.gg != "I'm a \"raw UTF-8\" \\ string.": raise RuntimeError(cvar.gg) def check(got, expected): expected_list = expected.split("\n") got_list = got.split("\n") if expected_list != got_list: raise RuntimeError("\n" + "Expected: " + str(expected_list) + "\n" + "Got : " + str(got_list)) # When getting docstrings, use inspect.getdoc(x) instead of x.__doc__ otherwise the different options # such as -O and -builtin may produce different initial indentation. check(inspect.getdoc(RawStringDoc.WW), "Single line documentation comment") check(inspect.getdoc(RawStringDoc.XX), """Multi-line documentation comment""") check(inspect.getdoc(RawStringDoc.YY), """Single line "raw string" documentation comment""") check(inspect.getdoc(RawStringDoc.ZZ), """Documentation comment as a "raw string" on multiple lines including a \ backslash""") check(mm, """)I'm an "ascii" \ string constant with multiple lines.""")