Unit tests for SmartRest
Dependencies: C027 SmartRest mbed
values/ParsedValueTest.cpp@0:789029e49ea1, 2014-03-24 (annotated)
- Committer:
- vwochnik
- Date:
- Mon Mar 24 10:12:45 2014 +0000
- Revision:
- 0:789029e49ea1
fix
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
vwochnik | 0:789029e49ea1 | 1 | #include "ParsedValueTest.h" |
vwochnik | 0:789029e49ea1 | 2 | #include <stdio.h> |
vwochnik | 0:789029e49ea1 | 3 | #include <assert.h> |
vwochnik | 0:789029e49ea1 | 4 | #include <string.h> |
vwochnik | 0:789029e49ea1 | 5 | |
vwochnik | 0:789029e49ea1 | 6 | ParsedValueTest::ParsedValueTest() |
vwochnik | 0:789029e49ea1 | 7 | { |
vwochnik | 0:789029e49ea1 | 8 | } |
vwochnik | 0:789029e49ea1 | 9 | |
vwochnik | 0:789029e49ea1 | 10 | void ParsedValueTest::test() |
vwochnik | 0:789029e49ea1 | 11 | { |
vwochnik | 0:789029e49ea1 | 12 | testNull(); |
vwochnik | 0:789029e49ea1 | 13 | testInteger("0", 0l); |
vwochnik | 0:789029e49ea1 | 14 | testInteger("-1", -1l); |
vwochnik | 0:789029e49ea1 | 15 | testInteger("1", 1l); |
vwochnik | 0:789029e49ea1 | 16 | testInteger("300", 300l); |
vwochnik | 0:789029e49ea1 | 17 | testInteger("-300", -300l); |
vwochnik | 0:789029e49ea1 | 18 | testInteger("30000000000", 30000000000l); |
vwochnik | 0:789029e49ea1 | 19 | testInteger("-30000000000", -30000000000l); |
vwochnik | 0:789029e49ea1 | 20 | testFloat("1.0", 1.0); |
vwochnik | 0:789029e49ea1 | 21 | testFloat(".1", 0.1); |
vwochnik | 0:789029e49ea1 | 22 | testFloat("-.1", -0.1); |
vwochnik | 0:789029e49ea1 | 23 | testFloat("-1.0", -1.0); |
vwochnik | 0:789029e49ea1 | 24 | testFloat("1.2345", 1.2345); |
vwochnik | 0:789029e49ea1 | 25 | testFloat("-1.2345", -1.2345); |
vwochnik | 0:789029e49ea1 | 26 | testFloat("12345.2345", 12345.2345); |
vwochnik | 0:789029e49ea1 | 27 | testFloat("-12345.2345", -12345.2345); |
vwochnik | 0:789029e49ea1 | 28 | testCharacter("Hello", "Hello"); |
vwochnik | 0:789029e49ea1 | 29 | testCharacter("123123.", "123123."); |
vwochnik | 0:789029e49ea1 | 30 | testCharacter("-123123.", "-123123."); |
vwochnik | 0:789029e49ea1 | 31 | testCharacter("-", "-"); |
vwochnik | 0:789029e49ea1 | 32 | } |
vwochnik | 0:789029e49ea1 | 33 | |
vwochnik | 0:789029e49ea1 | 34 | void ParsedValueTest::testNull() |
vwochnik | 0:789029e49ea1 | 35 | { |
vwochnik | 0:789029e49ea1 | 36 | ParsedValue value(""); |
vwochnik | 0:789029e49ea1 | 37 | assert(value.valueType() == VALUE_NULL); |
vwochnik | 0:789029e49ea1 | 38 | assert(value.characterValue() == NULL); |
vwochnik | 0:789029e49ea1 | 39 | assert(value.integerValue() == 0l); |
vwochnik | 0:789029e49ea1 | 40 | assert(value.floatValue() == 0.0); |
vwochnik | 0:789029e49ea1 | 41 | assert(value.length() == 0); |
vwochnik | 0:789029e49ea1 | 42 | value.write(sink); |
vwochnik | 0:789029e49ea1 | 43 | assert(strcmp(sink.value(), "") == 0); |
vwochnik | 0:789029e49ea1 | 44 | sink.clear(); |
vwochnik | 0:789029e49ea1 | 45 | |
vwochnik | 0:789029e49ea1 | 46 | Value *copy = value.copy(); |
vwochnik | 0:789029e49ea1 | 47 | assert(copy->length() == value.length()); |
vwochnik | 0:789029e49ea1 | 48 | assert(copy->valueType() == value.valueType()); |
vwochnik | 0:789029e49ea1 | 49 | assert(copy->characterValue() == value.characterValue()); |
vwochnik | 0:789029e49ea1 | 50 | delete copy; |
vwochnik | 0:789029e49ea1 | 51 | } |
vwochnik | 0:789029e49ea1 | 52 | |
vwochnik | 0:789029e49ea1 | 53 | void ParsedValueTest::testInteger(const char *string, long expected) |
vwochnik | 0:789029e49ea1 | 54 | { |
vwochnik | 0:789029e49ea1 | 55 | ParsedValue value(string); |
vwochnik | 0:789029e49ea1 | 56 | assert(value.length() == strlen(string)); |
vwochnik | 0:789029e49ea1 | 57 | assert(value.valueType() == VALUE_INTEGER); |
vwochnik | 0:789029e49ea1 | 58 | assert(value.integerValue() == expected); |
vwochnik | 0:789029e49ea1 | 59 | value.write(sink); |
vwochnik | 0:789029e49ea1 | 60 | assert(strcmp(string, sink.value()) == 0); |
vwochnik | 0:789029e49ea1 | 61 | sink.clear(); |
vwochnik | 0:789029e49ea1 | 62 | |
vwochnik | 0:789029e49ea1 | 63 | Value *copy = value.copy(); |
vwochnik | 0:789029e49ea1 | 64 | |
vwochnik | 0:789029e49ea1 | 65 | assert(copy->length() == value.length()); |
vwochnik | 0:789029e49ea1 | 66 | assert(copy->valueType() == value.valueType()); |
vwochnik | 0:789029e49ea1 | 67 | assert(copy->integerValue() == value.integerValue()); |
vwochnik | 0:789029e49ea1 | 68 | copy->write(sink); |
vwochnik | 0:789029e49ea1 | 69 | assert(strcmp(string, sink.value()) == 0); |
vwochnik | 0:789029e49ea1 | 70 | sink.clear(); |
vwochnik | 0:789029e49ea1 | 71 | delete copy; |
vwochnik | 0:789029e49ea1 | 72 | } |
vwochnik | 0:789029e49ea1 | 73 | |
vwochnik | 0:789029e49ea1 | 74 | void ParsedValueTest::testFloat(const char *string, double expected) |
vwochnik | 0:789029e49ea1 | 75 | { |
vwochnik | 0:789029e49ea1 | 76 | ParsedValue value(string); |
vwochnik | 0:789029e49ea1 | 77 | assert(value.length() == strlen(string)); |
vwochnik | 0:789029e49ea1 | 78 | assert(value.valueType() == VALUE_FLOAT); |
vwochnik | 0:789029e49ea1 | 79 | assert(value.floatValue() == expected); |
vwochnik | 0:789029e49ea1 | 80 | value.write(sink); |
vwochnik | 0:789029e49ea1 | 81 | assert(strcmp(string, sink.value()) == 0); |
vwochnik | 0:789029e49ea1 | 82 | sink.clear(); |
vwochnik | 0:789029e49ea1 | 83 | |
vwochnik | 0:789029e49ea1 | 84 | Value *copy = value.copy(); |
vwochnik | 0:789029e49ea1 | 85 | |
vwochnik | 0:789029e49ea1 | 86 | assert(copy->length() == value.length()); |
vwochnik | 0:789029e49ea1 | 87 | assert(copy->valueType() == value.valueType()); |
vwochnik | 0:789029e49ea1 | 88 | assert(copy->floatValue() == value.floatValue()); |
vwochnik | 0:789029e49ea1 | 89 | copy->write(sink); |
vwochnik | 0:789029e49ea1 | 90 | assert(strcmp(string, sink.value()) == 0); |
vwochnik | 0:789029e49ea1 | 91 | sink.clear(); |
vwochnik | 0:789029e49ea1 | 92 | delete copy; |
vwochnik | 0:789029e49ea1 | 93 | } |
vwochnik | 0:789029e49ea1 | 94 | |
vwochnik | 0:789029e49ea1 | 95 | void ParsedValueTest::testCharacter(const char *string, const char *expected) |
vwochnik | 0:789029e49ea1 | 96 | { |
vwochnik | 0:789029e49ea1 | 97 | ParsedValue value(string); |
vwochnik | 0:789029e49ea1 | 98 | assert(value.length() == strlen(expected)); |
vwochnik | 0:789029e49ea1 | 99 | assert(value.valueType() == VALUE_CHARACTER); |
vwochnik | 0:789029e49ea1 | 100 | assert(value.characterValue() == string); |
vwochnik | 0:789029e49ea1 | 101 | value.write(sink); |
vwochnik | 0:789029e49ea1 | 102 | assert(strcmp(expected, sink.value()) == 0); |
vwochnik | 0:789029e49ea1 | 103 | sink.clear(); |
vwochnik | 0:789029e49ea1 | 104 | |
vwochnik | 0:789029e49ea1 | 105 | Value *copy = value.copy(); |
vwochnik | 0:789029e49ea1 | 106 | |
vwochnik | 0:789029e49ea1 | 107 | assert(copy->length() == value.length()); |
vwochnik | 0:789029e49ea1 | 108 | assert(copy->valueType() == value.valueType()); |
vwochnik | 0:789029e49ea1 | 109 | assert(strcmp(copy->characterValue(), value.characterValue()) == 0); |
vwochnik | 0:789029e49ea1 | 110 | assert(copy->characterValue() != value.characterValue()); |
vwochnik | 0:789029e49ea1 | 111 | delete copy; |
vwochnik | 0:789029e49ea1 | 112 | } |
vwochnik | 0:789029e49ea1 | 113 |