File: test_read.cc

package info (click to toggle)
swi-prolog 9.0.4%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 82,408 kB
  • sloc: ansic: 387,503; perl: 359,326; cpp: 6,613; lisp: 6,247; java: 5,540; sh: 3,147; javascript: 2,668; python: 1,900; ruby: 1,594; yacc: 845; makefile: 428; xml: 317; sed: 12; sql: 6
file content (76 lines) | stat: -rw-r--r-- 2,425 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
// ...

#undef NDEBUG
#include <assert.h>
#include <iostream>
#include <fstream>
#include <string>
#include "test.pb.h"


void read_wire(const std::string& path, test::Scalars1* scalars1) {
  std::ifstream file1;
  file1.open(path);
  scalars1->ParseFromIstream(&file1);
  file1.close();
}

bool read_scalars1a() {
  test::Scalars1 scalars1a;
  read_wire("scalars1a_from_prolog.wire", &scalars1a);
  assert(scalars1a.v_double()   ==  1.5);
  assert(scalars1a.v_float()    ==  2.5);
  assert(scalars1a.v_int32()    ==  3);
  assert(scalars1a.v_int64()    ==  4);
  assert(scalars1a.v_uint32()   ==  5);
  assert(scalars1a.v_uint64()   ==  6);
  assert(scalars1a.v_sint32()   ==  7);
  assert(scalars1a.v_sint64()   ==  8);
  assert(scalars1a.v_fixed32()  ==  9);
  assert(scalars1a.v_fixed64()  == 10);
  assert(scalars1a.v_sfixed32() == 11);
  assert(scalars1a.v_sfixed64() == 12);
  assert(scalars1a.v_bool()     ==  false);
  assert(scalars1a.v_string()   == "écran 網目錦蛇");
  assert(scalars1a.v_bytes()    == "\xc3\x28");  // See https://stackoverflow.com/questions/1301402/example-invalid-utf8-string
  assert(scalars1a.v_enum()     == test::MyEnum::E1);
  return true;
}

bool read_scalars1b() {
  test::Scalars1 scalars1b;
  read_wire("scalars1b_from_prolog.wire", &scalars1b);
  // std::cerr << scalars1b.DebugString() << std::endl;
  assert(scalars1b.v_double()   ==  -1.5);
  assert(scalars1b.v_float()    ==  -2.5);
  assert(scalars1b.v_int32()    ==  -3);
  assert(scalars1b.v_int64()    ==  -4);
  assert(scalars1b.v_uint32()   ==  5+10000000);
  assert(scalars1b.v_uint64()   ==  6+10000000);
  assert(scalars1b.v_sint32()   ==  -7);
  assert(scalars1b.v_sint64()   ==  -8);
  assert(scalars1b.v_fixed32()  ==   9+1000);
  assert(scalars1b.v_fixed64()  ==  10+1000);
  assert(scalars1b.v_sfixed32() == -11);
  assert(scalars1b.v_sfixed64() == -12);
  assert(scalars1b.v_bool()     ==  true);
  assert(scalars1b.v_string()   == "[àmímé níshíkíhéꜜbì] reticulated python");
  assert(scalars1b.v_bytes()    == "\xf0\x28\x8c\x28");  // See https://stackoverflow.com/questions/1301402/example-invalid-utf8-string
  assert(scalars1b.v_enum()     ==  test::MyEnum::AnotherEnum);
  return true;
}

int test_read() {
  if (read_scalars1a() && read_scalars1b()) {
    return 0;
  } else {
    return 1;
  }
}


int main(int argc, char* argv[]) {
  GOOGLE_PROTOBUF_VERIFY_VERSION;
  return test_read();
}