mirror of
https://github.com/osm2pgsql-dev/osm2pgsql.git
synced 2025-07-22 12:00:31 +00:00
169 lines
3.8 KiB
C++
169 lines
3.8 KiB
C++
/**
|
|
* SPDX-License-Identifier: GPL-2.0-or-later
|
|
*
|
|
* This file is part of osm2pgsql (https://osm2pgsql.org/).
|
|
*
|
|
* Copyright (C) 2006-2025 by the osm2pgsql developer community.
|
|
* For a full list of authors see the git log.
|
|
*/
|
|
|
|
#include <catch.hpp>
|
|
|
|
#include "json-writer.hpp"
|
|
|
|
TEST_CASE("json writer writes null", "[NoDB]")
|
|
{
|
|
json_writer_t writer;
|
|
writer.null();
|
|
REQUIRE(writer.json() == "null");
|
|
}
|
|
|
|
TEST_CASE("json writer writes true", "[NoDB]")
|
|
{
|
|
json_writer_t writer;
|
|
writer.boolean(true);
|
|
REQUIRE(writer.json() == "true");
|
|
}
|
|
|
|
TEST_CASE("json writer writes false", "[NoDB]")
|
|
{
|
|
json_writer_t writer;
|
|
writer.boolean(false);
|
|
REQUIRE(writer.json() == "false");
|
|
}
|
|
|
|
TEST_CASE("json writer writes integer", "[NoDB]")
|
|
{
|
|
json_writer_t writer;
|
|
writer.number(17);
|
|
REQUIRE(writer.json() == "17");
|
|
}
|
|
|
|
TEST_CASE("json writer writes real number", "[NoDB]")
|
|
{
|
|
json_writer_t writer;
|
|
writer.number(3.141);
|
|
REQUIRE(writer.json() == "3.141");
|
|
}
|
|
|
|
TEST_CASE("json writer writes invalid real number as null", "[NoDB]")
|
|
{
|
|
json_writer_t writer;
|
|
writer.number(INFINITY);
|
|
REQUIRE(writer.json() == "null");
|
|
}
|
|
|
|
TEST_CASE("json writer writes NaN as null", "[NoDB]")
|
|
{
|
|
json_writer_t writer;
|
|
writer.number(NAN);
|
|
REQUIRE(writer.json() == "null");
|
|
}
|
|
|
|
TEST_CASE("json writer writes string", "[NoDB]")
|
|
{
|
|
json_writer_t writer;
|
|
writer.string("foo");
|
|
REQUIRE(writer.json() == "\"foo\"");
|
|
}
|
|
|
|
TEST_CASE("json writer writes empty array", "[NoDB]")
|
|
{
|
|
json_writer_t writer;
|
|
writer.start_array();
|
|
writer.end_array();
|
|
REQUIRE(writer.json() == "[]");
|
|
}
|
|
|
|
TEST_CASE("json writer writes array with one thing", "[NoDB]")
|
|
{
|
|
json_writer_t writer;
|
|
writer.start_array();
|
|
writer.string("foo");
|
|
writer.end_array();
|
|
REQUIRE(writer.json() == "[\"foo\"]");
|
|
}
|
|
|
|
TEST_CASE("json writer writes array with two things", "[NoDB]")
|
|
{
|
|
json_writer_t writer;
|
|
writer.start_array();
|
|
writer.string("foo");
|
|
writer.next();
|
|
writer.number(42);
|
|
writer.end_array();
|
|
REQUIRE(writer.json() == "[\"foo\",42]");
|
|
}
|
|
|
|
TEST_CASE("json writer writes array with extra next()", "[NoDB]")
|
|
{
|
|
json_writer_t writer;
|
|
writer.start_array();
|
|
writer.string("foo");
|
|
writer.next();
|
|
writer.number(42);
|
|
writer.next();
|
|
writer.end_array();
|
|
REQUIRE(writer.json() == "[\"foo\",42]");
|
|
}
|
|
|
|
TEST_CASE("json writer writes empty object", "[NoDB]")
|
|
{
|
|
json_writer_t writer;
|
|
writer.start_object();
|
|
writer.end_object();
|
|
REQUIRE(writer.json() == "{}");
|
|
}
|
|
|
|
TEST_CASE("json writer writes object with one thing", "[NoDB]")
|
|
{
|
|
json_writer_t writer;
|
|
writer.start_object();
|
|
writer.key("foo");
|
|
writer.string("bar");
|
|
writer.end_object();
|
|
REQUIRE(writer.json() == "{\"foo\":\"bar\"}");
|
|
}
|
|
|
|
TEST_CASE("json writer writes object with two things", "[NoDB]")
|
|
{
|
|
json_writer_t writer;
|
|
writer.start_object();
|
|
writer.key("a");
|
|
writer.string("str");
|
|
writer.next();
|
|
writer.key("b");
|
|
writer.number(42);
|
|
writer.end_object();
|
|
REQUIRE(writer.json() == "{\"a\":\"str\",\"b\":42}");
|
|
}
|
|
|
|
TEST_CASE("json writer writes object with extra next()", "[NoDB]")
|
|
{
|
|
json_writer_t writer;
|
|
writer.start_object();
|
|
writer.key("a");
|
|
writer.string("str");
|
|
writer.next();
|
|
writer.key("b");
|
|
writer.number(42);
|
|
writer.next();
|
|
writer.end_object();
|
|
REQUIRE(writer.json() == "{\"a\":\"str\",\"b\":42}");
|
|
}
|
|
|
|
TEST_CASE("json writer with strange chars in string", "[NoDB]")
|
|
{
|
|
json_writer_t writer;
|
|
writer.string("abc-\"-\\-\b-\f-\n-\r-\t-abc");
|
|
REQUIRE(writer.json() == "\"abc-\\\"-\\\\-\\b-\\f-\\n-\\r-\\t-abc\"");
|
|
}
|
|
|
|
TEST_CASE("json writer with even stranger chars in string", "[NoDB]")
|
|
{
|
|
json_writer_t writer;
|
|
writer.string("abc-\x01-\x1f-abc");
|
|
REQUIRE(writer.json() == "\"abc-\\u0001-\\u001f-abc\"");
|
|
}
|
|
|