tools/profiler/tests/gtest/JSStreamWriterTest.cpp

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
     2 /* This Source Code Form is subject to the terms of the Mozilla Public
     3  * License, v. 2.0. If a copy of the MPL was not distributed with this
     4  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     6 #include "gtest/gtest.h"
     8 #include <sstream>
     9 #include "JSStreamWriter.h"
    11 TEST(JSStreamWriter, NoOutput) {
    12   std::stringstream ss;
    13   JSStreamWriter b(ss);
    14   ASSERT_TRUE(ss.str().compare("") == 0);
    15 }
    17 TEST(JSStreamWriter, EmptyObject) {
    18   std::stringstream ss;
    19   JSStreamWriter b(ss);
    20   b.BeginObject();
    21   b.EndObject();
    22   ASSERT_TRUE(ss.str().compare("{}") == 0);
    23 }
    25 TEST(JSStreamWriter, OnePropertyObject) {
    26   std::stringstream ss;
    27   JSStreamWriter b(ss);
    28   b.BeginObject();
    29   b.Name("a");
    30   b.Value(1);
    31   b.EndObject();
    32   ASSERT_TRUE(ss.str().compare("{\"a\":1}") == 0);
    33 }
    35 TEST(JSStreamWriter, MultiPropertyObject) {
    36   std::stringstream ss;
    37   JSStreamWriter b(ss);
    38   b.BeginObject();
    39   b.Name("a");
    40   b.Value(1);
    41   b.Name("b");
    42   b.Value(2);
    43   b.EndObject();
    44   ASSERT_TRUE(ss.str().compare("{\"a\":1,\"b\":2}") == 0);
    45 }
    47 TEST(JSStreamWriter, OnePropertyArray) {
    48   std::stringstream ss;
    49   JSStreamWriter b(ss);
    50   b.BeginArray();
    51   b.Value(1);
    52   b.EndArray();
    53   ASSERT_TRUE(ss.str().compare("[1]") == 0);
    54 }
    56 TEST(JSStreamWriter, MultiPropertyArray) {
    57   std::stringstream ss;
    58   JSStreamWriter b(ss);
    59   b.BeginArray();
    60   b.Value(1);
    61   b.Value(2);
    62   b.EndArray();
    63   ASSERT_TRUE(ss.str().compare("[1,2]") == 0);
    64 }
    66 TEST(JSStreamWriter, NestedObject) {
    67   std::stringstream ss;
    68   JSStreamWriter b(ss);
    69   b.BeginObject();
    70   b.Name("a");
    71   b.BeginObject();
    72   b.Name("b");
    73   b.Value(1);
    74   b.EndObject();
    75   b.EndObject();
    76   ASSERT_TRUE(ss.str().compare("{\"a\":{\"b\":1}}") == 0);
    77 }
    79 TEST(JSStreamWriter, NestedObjectInArray) {
    80   std::stringstream ss;
    81   JSStreamWriter b(ss);
    82   b.BeginArray();
    83   b.BeginObject();
    84   b.Name("a");
    85   b.Value(1);
    86   b.EndObject();
    87   b.EndArray();
    88   ASSERT_TRUE(ss.str().compare("[{\"a\":1}]") == 0);
    89 }
    91 TEST(JSStreamWriter, NestedArrayInObject) {
    92   std::stringstream ss;
    93   JSStreamWriter b(ss);
    94   b.BeginObject();
    95   b.Name("a");
    96   b.BeginArray();
    97   b.Value(1);
    98   b.EndArray();
    99   b.EndObject();
   100   ASSERT_TRUE(ss.str().compare("{\"a\":[1]}") == 0);
   101 }
   103 TEST(JSStreamWriter, StingEscaping) {
   104   std::stringstream ss;
   105   JSStreamWriter b(ss);
   106   b.Value("a\"a");
   107   ASSERT_TRUE(ss.str().compare("\"a\\\"a\"") == 0);
   109   std::stringstream ss2;
   110   JSStreamWriter b2(ss2);
   111   b2.Value("a\na");
   112   ASSERT_TRUE(ss2.str().compare("\"a\\u000Aa\"") == 0);
   113 }
   115 TEST(JSStreamWriter, ArrayOfOjects) {
   116   std::stringstream ss;
   117   JSStreamWriter b(ss);
   118   b.BeginArray();
   119     b.BeginObject();
   120     b.EndObject();
   122     b.BeginObject();
   123     b.EndObject();
   124   b.EndArray();
   125   ASSERT_TRUE(ss.str().compare("[{},{}]") == 0);
   126 }
   128 TEST(JSStreamWriter, Complex) {
   129   std::stringstream ss;
   130   JSStreamWriter b(ss);
   131   b.BeginObject();
   132     b.Name("a");
   133       b.BeginArray();
   134         b.Value(1);
   136         b.BeginObject();
   137         b.EndObject();
   139         b.BeginObject();
   140           b.Name("b");
   141           b.Value("c");
   142         b.EndObject();
   143       b.EndArray();
   145     b.Name("b");
   146       b.BeginArray();
   147         b.BeginArray();
   148         b.EndArray();
   149       b.EndArray();
   150   b.EndObject();
   151   ASSERT_TRUE(ss.str().compare("{\"a\":[1,{},{\"b\":\"c\"}],\"b\":[[]]}") == 0);
   152 }
   154 TEST(JSStreamWriter, Complex2) {
   155   std::stringstream ss;
   156   JSStreamWriter b(ss);
   157   b.BeginObject();
   158     b.Name("a");
   159       b.BeginArray();
   160         b.BeginObject();
   161           b.Name("b");
   162             b.Value("c");
   163           b.Name("d");
   164             b.BeginArray();
   165               b.BeginObject();
   166                 b.Name("e");
   167                   b.BeginArray();
   168                     b.BeginObject();
   169                       b.Name("f");
   170                         b.Value("g");
   171                     b.EndObject();
   172                     b.BeginObject();
   173                       b.Name("h");
   174                         b.Value("i");
   175                     b.EndObject();
   176                   b.EndArray();
   177               b.EndObject();
   178             b.EndArray();
   179         b.EndObject();
   180       b.EndArray();
   181   b.EndObject();
   182   ASSERT_TRUE(ss.str().compare("{\"a\":[{\"b\":\"c\",\"d\":[{\"e\":[{\"f\":\"g\"},{\"h\":\"i\"}]}]}]}") 
   183 }

mercurial