mirror of
https://gitea.wildfiregames.com/0ad/0ad.git
synced 2026-07-27 10:32:55 +00:00
CLogger: Use cppformat instead of sys_vswprintf.
sys_vswprintf relies on platform-specific printf implementations, which vary widely between platforms (in handling of truncation, return values, use of %s/%S/%hs/%ls for mixing char and wchar_t strings, etc) and are therefore a pain. Use cppformat's fmt::sprintf instead, which has very similar syntax to sprintf but is more C++ish and is portable. Also, wchar_t is stupid, so use char* strings (which are expected to be UTF-8) in CLogger. This creates a bit of a pain with changing all callers to convert to char* strings, but that's their fault for not using UTF-8 already. Refs #3011. This was SVN commit r16182.
This commit is contained in:
@@ -31,8 +31,8 @@ public:
|
||||
ScriptInterface script("Test", "Test", g_ScriptRuntime);
|
||||
TestLogger logger;
|
||||
TS_ASSERT(script.LoadScript(L"test.js", "var x = 1+1;"));
|
||||
TS_ASSERT_WSTR_NOT_CONTAINS(logger.GetOutput(), L"JavaScript error");
|
||||
TS_ASSERT_WSTR_NOT_CONTAINS(logger.GetOutput(), L"JavaScript warning");
|
||||
TS_ASSERT_STR_NOT_CONTAINS(logger.GetOutput(), "JavaScript error");
|
||||
TS_ASSERT_STR_NOT_CONTAINS(logger.GetOutput(), "JavaScript warning");
|
||||
}
|
||||
|
||||
void test_loadscript_error()
|
||||
@@ -40,7 +40,7 @@ public:
|
||||
ScriptInterface script("Test", "Test", g_ScriptRuntime);
|
||||
TestLogger logger;
|
||||
TS_ASSERT(!script.LoadScript(L"test.js", "1+"));
|
||||
TS_ASSERT_WSTR_CONTAINS(logger.GetOutput(), L"JavaScript error: test.js line 1\nSyntaxError: syntax error");
|
||||
TS_ASSERT_STR_CONTAINS(logger.GetOutput(), "JavaScript error: test.js line 1\nSyntaxError: syntax error");
|
||||
}
|
||||
|
||||
void test_loadscript_strict_warning()
|
||||
@@ -49,7 +49,7 @@ public:
|
||||
TestLogger logger;
|
||||
// in strict mode, this inside a function doesn't point to the global object
|
||||
TS_ASSERT(script.LoadScript(L"test.js", "var isStrict = (function() { return !this; })();warn('isStrict is '+isStrict);"));
|
||||
TS_ASSERT_WSTR_CONTAINS(logger.GetOutput(), L"WARNING: isStrict is true");
|
||||
TS_ASSERT_STR_CONTAINS(logger.GetOutput(), "WARNING: isStrict is true");
|
||||
}
|
||||
|
||||
void test_loadscript_strict_error()
|
||||
@@ -57,7 +57,7 @@ public:
|
||||
ScriptInterface script("Test", "Test", g_ScriptRuntime);
|
||||
TestLogger logger;
|
||||
TS_ASSERT(!script.LoadScript(L"test.js", "with(1){}"));
|
||||
TS_ASSERT_WSTR_CONTAINS(logger.GetOutput(), L"JavaScript error: test.js line 1\nSyntaxError: strict mode code may not contain \'with\' statements");
|
||||
TS_ASSERT_STR_CONTAINS(logger.GetOutput(), "JavaScript error: test.js line 1\nSyntaxError: strict mode code may not contain \'with\' statements");
|
||||
}
|
||||
|
||||
void test_clone_basic()
|
||||
|
||||
Reference in New Issue
Block a user