|
14 | 14 | #include <cmath>
|
15 | 15 | #include <cstring>
|
16 | 16 | #include <iomanip>
|
| 17 | +#include <iostream> |
| 18 | +#include <sstream> |
17 | 19 | #include <json/config.h>
|
18 | 20 | #include <json/json.h>
|
19 | 21 | #include <limits>
|
@@ -1644,6 +1646,28 @@ JSONTEST_FIXTURE(ValueTest, StaticString) {
|
1644 | 1646 | }
|
1645 | 1647 | }
|
1646 | 1648 |
|
| 1649 | +JSONTEST_FIXTURE(ValueTest, WideString) { |
| 1650 | + // https://github.com/open-source-parsers/jsoncpp/issues/756 |
| 1651 | + const std::string uni = u8"式,进"; // "\u5f0f\uff0c\u8fdb" |
| 1652 | + std::string styled; |
| 1653 | + { |
| 1654 | + Json::Value v; |
| 1655 | + v["abc"] = uni; |
| 1656 | + styled = v.toStyledString(); |
| 1657 | + } |
| 1658 | + Json::Value root; |
| 1659 | + { |
| 1660 | + JSONCPP_STRING errs; |
| 1661 | + std::istringstream iss(styled); |
| 1662 | + bool ok = parseFromStream(Json::CharReaderBuilder(), iss, &root, &errs); |
| 1663 | + JSONTEST_ASSERT(ok); |
| 1664 | + if (!ok) { |
| 1665 | + std::cerr << "errs: " << errs << std::endl; |
| 1666 | + } |
| 1667 | + } |
| 1668 | + JSONTEST_ASSERT_STRING_EQUAL(root["abc"].asString(), uni); |
| 1669 | +} |
| 1670 | + |
1647 | 1671 | JSONTEST_FIXTURE(ValueTest, CommentBefore) {
|
1648 | 1672 | Json::Value val; // fill val
|
1649 | 1673 | val.setComment(Json::String("// this comment should appear before"),
|
@@ -2556,6 +2580,7 @@ int main(int argc, const char* argv[]) {
|
2556 | 2580 | JSONTEST_REGISTER_FIXTURE(runner, ValueTest, offsetAccessors);
|
2557 | 2581 | JSONTEST_REGISTER_FIXTURE(runner, ValueTest, typeChecksThrowExceptions);
|
2558 | 2582 | JSONTEST_REGISTER_FIXTURE(runner, ValueTest, StaticString);
|
| 2583 | + JSONTEST_REGISTER_FIXTURE(runner, ValueTest, WideString); |
2559 | 2584 | JSONTEST_REGISTER_FIXTURE(runner, ValueTest, CommentBefore);
|
2560 | 2585 | // JSONTEST_REGISTER_FIXTURE(runner, ValueTest, nulls);
|
2561 | 2586 | JSONTEST_REGISTER_FIXTURE(runner, ValueTest, zeroes);
|
|
0 commit comments