Я пытаюсь написать тест для сериализации JSON, используя Boost :: JSON и GTEST в MSVC, однако JSON :: Serialize возвращает для неэпти JSON :: Value/Object. Код запускает Fine Main (сериализуется и анализации, как и ожидалось); Однако, когда я запускаю аналогичный код в тестировании я получаю исключение SEH с кодом 0xc0000005.
Этот GTEST бросает ошибку времени выполнения: «Неизвестный файл: ошибка: исключение SEH с кодом 0xc0000005, добавленное в тестовый орган».TEST(CardTests, JsonSave) {
Card card("word", "hint", "text", "translation");
json::object json = card.to_json();//
Card test1(json); // constructs correctly
EXPECT_EQ(card, test1);//equal as expected
string s = json::serialize(json);// null string with length 142
ASSERT_NE(s.size(), 0);//passes
json::value parsed = json::parse(s);//SEH exception with code 0xc0000005 (I'm guessing something to do with a null pointer dereference
Card test2(parsed); //not reached
EXPECT_EQ(card, test2); //not reached
}
Однако при вызове следующей функции в основной возвращает true с ожидаемым сообщением.
bool test_card_json() {
Card card("test","hint","text", "translation");
json::object json_data = card.to_json();
if (card != Card(json_data)) return false;
string s = json::serialize(json_data);
if (s.size() == 0) return false;
json::value parsed{};
try { parsed = json::parse(s);}
catch (...) { return false; }
if (card != Card(parsed.as_object())) return false;
std::cout
Оба файла имеют: < /p>
namespace json = boost::json;
using string = std::string;
< /code>
Я не уверен, есть ли что -то прикольное с настройками между решениями, или есть ошибка доступа к памяти в обоих тестах, что приводит к сбою в GTEST. Если это важно, я запускаю тесты в отдельном проекте в рамках того же решения Visual Studio 2022, используя в режиме отладки в C ++ 23. Запуск двух тривиальных проходов и Fail GTESTS дает ожидаемые результаты. < /P>
Извините, если какая -либо информация отсутствует. Я довольно новичок в программировании, и это мой первый пост о переполнении стека.TEST(Serialize) {
json::object obj{ {"key", "value"} };//obj = {sp_={i_=0 } k_=object (7 '\a') t_=0x0000025f96d1dba0 {size=1 capacity=1 salt=2609575484320 } }
json::serialize(obj); //Exception thrown: read access violation. **_Val** was 0xFFFFFFFFFFFFFFFF.
}
< /code>
, где _val от STD Utility LN 769-776. < /p>
_EXPORT_STD template
_CONSTEXPR20 _Ty exchange(_Ty& _Val, _Other&& _New_val)
noexcept(conjunction_v) {
// assign _New_val to _Val, return previous _Val
_Ty _Old_val = static_cast(_Val);
_Val = static_cast(_New_val);
return _Old_val;
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... nobject-in
Boost :: json :: serialize возвращается из непустых Boost :: json :: Объект в Tests Google [закрыто] ⇐ C++
Программы на C++. Форум разработчиков
1759715564
Anonymous
Я пытаюсь написать тест для сериализации JSON, используя Boost :: JSON и GTEST в MSVC, однако JSON :: Serialize возвращает для неэпти JSON :: Value/Object. Код запускает Fine Main (сериализуется и анализации, как и ожидалось); Однако, когда я запускаю аналогичный код в тестировании я получаю исключение SEH с кодом 0xc0000005.
Этот GTEST бросает ошибку времени выполнения: «Неизвестный файл: ошибка: исключение SEH с кодом 0xc0000005, добавленное в тестовый орган».TEST(CardTests, JsonSave) {
Card card("word", "hint", "text", "translation");
json::object json = card.to_json();//
Card test1(json); // constructs correctly
EXPECT_EQ(card, test1);//equal as expected
string s = json::serialize(json);// null string with length 142
ASSERT_NE(s.size(), 0);//passes
json::value parsed = json::parse(s);//SEH exception with code 0xc0000005 (I'm guessing something to do with a null pointer dereference
Card test2(parsed); //not reached
EXPECT_EQ(card, test2); //not reached
}
Однако при вызове следующей функции в основной возвращает true с ожидаемым сообщением.
bool test_card_json() {
Card card("test","hint","text", "translation");
json::object json_data = card.to_json();
if (card != Card(json_data)) return false;
string s = json::serialize(json_data);
if (s.size() == 0) return false;
json::value parsed{};
try { parsed = json::parse(s);}
catch (...) { return false; }
if (card != Card(parsed.as_object())) return false;
std::cout
Оба файла имеют: < /p>
namespace json = boost::json;
using string = std::string;
< /code>
Я не уверен, есть ли что -то прикольное с настройками между решениями, или есть ошибка доступа к памяти в обоих тестах, что приводит к сбою в GTEST. Если это важно, я запускаю тесты в отдельном проекте в рамках того же решения Visual Studio 2022, используя в режиме отладки в C ++ 23. Запуск двух тривиальных проходов и Fail GTESTS дает ожидаемые результаты. < /P>
Извините, если какая -либо информация отсутствует. Я довольно новичок в программировании, и это мой первый пост о переполнении стека.TEST(Serialize) {
json::object obj{ {"key", "value"} };//obj = {sp_={i_=0 } k_=object (7 '\a') t_=0x0000025f96d1dba0 {size=1 capacity=1 salt=2609575484320 } }
json::serialize(obj); //Exception thrown: read access violation. **_Val** was 0xFFFFFFFFFFFFFFFF.
}
< /code>
, где _val от STD Utility LN 769-776. < /p>
_EXPORT_STD template
_CONSTEXPR20 _Ty exchange(_Ty& _Val, _Other&& _New_val)
noexcept(conjunction_v) {
// assign _New_val to _Val, return previous _Val
_Ty _Old_val = static_cast(_Val);
_Val = static_cast(_New_val);
return _Old_val;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79782695/boostjsonserialize-returning-null-from-a-non-empty-boostjsonobject-in[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия