Sha256: 64dd41c83c77aac80b529b128f2b6dba7b12d1172fd2ab5084a0bd3a21aaca3d

Contents?: true

Size: 1.69 KB

Versions: 1

Compression:

Stored size: 1.69 KB

Contents

// SARU : Tag fastjson
// SARU : CxxLibs -L.. -lfastjson

#include "saru_cxx.h"

#include "fastjson/fastjson.h"
#include "fastjson/dom.h"

class TestFixture
{
  public:
    struct ErrorGetter
    {
      static void on_error( void * in_this, const fastjson::ErrorContext & ec )
      {
        static_cast<ErrorGetter*>(in_this)->error_message = ec.mesg;
      }

      std::string error_message;
    };

    ErrorGetter error_getter;
    fastjson::dom::Chunk chunk;
    fastjson::Token token;

    void round_trip_int_key()
    {
      std::string in_str("{2:\"x\"}");

      saru_assert( fastjson::dom::parse_string(in_str, &token, &chunk, fastjson::mode::ext_any_as_key, &ErrorGetter::on_error, &error_getter ) );
      saru_assert_equal( in_str, fastjson::as_string( &token ) ); 
    }

    void round_trip_int_key2()
    {
      std::string in_str("{2:\"x\"}");
      saru_assert( ! fastjson::dom::parse_string(in_str, &token, &chunk, 0, &ErrorGetter::on_error, &error_getter ) );
      saru_assert_equal("Unexpected character while parsing dict start", error_getter.error_message );
    }

    void round_trip_int_key3()
    {
      std::string in_str("{1:\"a\",2:\"x\"}");

      if( ! fastjson::dom::parse_string(in_str, &token, &chunk, fastjson::mode::ext_any_as_key, &ErrorGetter::on_error, &error_getter ) )
      {
        saru_error( error_getter.error_message );
      }
      saru_assert_equal( in_str, fastjson::as_string( &token ) ); 
    }
};

int main()
{
  saru::TestLogger logger;

  SARU_TEST( TestFixture::round_trip_int_key, logger);
  SARU_TEST( TestFixture::round_trip_int_key2, logger);
  SARU_TEST( TestFixture::round_trip_int_key3, logger);

  logger.printSummary();

  return logger.allOK()?0:1;
}

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
simdjson-0.3.0 vendor/simdjson/dependencies/fastjson/tests/test_permissive_roundtrip.cpp