Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: HelloWorld_CCA01M1 HelloWorld_CCA02M1 CI-data-logger-server HelloWorld_CCA02M1 ... more
This is a fork of the events subdirectory of https://github.com/ARMmbed/mbed-os.
Note, you must import this library with import name: events!!!
test/Test.cpp@201:dd058cec5f28, 2016-10-03 (annotated)
- Committer:
- Seppo Takalo
- Date:
- Mon Oct 03 14:40:33 2016 +0300
- Revision:
- 201:dd058cec5f28
Squashed 'features/FEATURE_COMMON_PAL/mbed-trace/' content from commit b17e969
git-subtree-dir: features/FEATURE_COMMON_PAL/mbed-trace
git-subtree-split: b17e96970777cdc61ba143bdd6ffc7b640aa6311
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| Seppo Takalo |
201:dd058cec5f28 | 1 | /* |
| Seppo Takalo |
201:dd058cec5f28 | 2 | * Copyright (c) 2014 ARM. All rights reserved. |
| Seppo Takalo |
201:dd058cec5f28 | 3 | */ |
| Seppo Takalo |
201:dd058cec5f28 | 4 | /** |
| Seppo Takalo |
201:dd058cec5f28 | 5 | * \file \test_libTrace\Test.c |
| Seppo Takalo |
201:dd058cec5f28 | 6 | * |
| Seppo Takalo |
201:dd058cec5f28 | 7 | * \brief Unit tests for mbed_trace |
| Seppo Takalo |
201:dd058cec5f28 | 8 | */ |
| Seppo Takalo |
201:dd058cec5f28 | 9 | #include <string.h> |
| Seppo Takalo |
201:dd058cec5f28 | 10 | #include <stdlib.h> |
| Seppo Takalo |
201:dd058cec5f28 | 11 | #include <stdint.h> |
| Seppo Takalo |
201:dd058cec5f28 | 12 | |
| Seppo Takalo |
201:dd058cec5f28 | 13 | #include "mbed-cpputest/CppUTest/TestHarness.h" |
| Seppo Takalo |
201:dd058cec5f28 | 14 | #include "mbed-cpputest/CppUTest/SimpleString.h" |
| Seppo Takalo |
201:dd058cec5f28 | 15 | #include "mbed-cpputest/CppUTest/CommandLineTestRunner.h" |
| Seppo Takalo |
201:dd058cec5f28 | 16 | |
| Seppo Takalo |
201:dd058cec5f28 | 17 | #define YOTTA_CFG_MBED_TRACE 1 |
| Seppo Takalo |
201:dd058cec5f28 | 18 | #define YOTTA_CFG_MBED_TRACE_FEA_IPV6 1 |
| Seppo Takalo |
201:dd058cec5f28 | 19 | |
| Seppo Takalo |
201:dd058cec5f28 | 20 | #include "mbed-trace/mbed_trace.h" |
| Seppo Takalo |
201:dd058cec5f28 | 21 | #include "ip6tos_stub.h" |
| Seppo Takalo |
201:dd058cec5f28 | 22 | |
| Seppo Takalo |
201:dd058cec5f28 | 23 | int main(int ac, char **av) |
| Seppo Takalo |
201:dd058cec5f28 | 24 | { |
| Seppo Takalo |
201:dd058cec5f28 | 25 | return CommandLineTestRunner::RunAllTests(ac, av); |
| Seppo Takalo |
201:dd058cec5f28 | 26 | } |
| Seppo Takalo |
201:dd058cec5f28 | 27 | |
| Seppo Takalo |
201:dd058cec5f28 | 28 | static int mutex_wait_count = 0; |
| Seppo Takalo |
201:dd058cec5f28 | 29 | static int mutex_release_count = 0; |
| Seppo Takalo |
201:dd058cec5f28 | 30 | static bool check_mutex_lock_status = true; |
| Seppo Takalo |
201:dd058cec5f28 | 31 | void my_mutex_wait() |
| Seppo Takalo |
201:dd058cec5f28 | 32 | { |
| Seppo Takalo |
201:dd058cec5f28 | 33 | mutex_wait_count++; |
| Seppo Takalo |
201:dd058cec5f28 | 34 | } |
| Seppo Takalo |
201:dd058cec5f28 | 35 | void my_mutex_release() |
| Seppo Takalo |
201:dd058cec5f28 | 36 | { |
| Seppo Takalo |
201:dd058cec5f28 | 37 | mutex_release_count++; |
| Seppo Takalo |
201:dd058cec5f28 | 38 | } |
| Seppo Takalo |
201:dd058cec5f28 | 39 | |
| Seppo Takalo |
201:dd058cec5f28 | 40 | char buf[1024]; |
| Seppo Takalo |
201:dd058cec5f28 | 41 | #include <stdio.h> |
| Seppo Takalo |
201:dd058cec5f28 | 42 | void myprint(const char* str) |
| Seppo Takalo |
201:dd058cec5f28 | 43 | { |
| Seppo Takalo |
201:dd058cec5f28 | 44 | if ( check_mutex_lock_status ) { |
| Seppo Takalo |
201:dd058cec5f28 | 45 | CHECK( (mutex_wait_count - mutex_release_count) > 0 ); |
| Seppo Takalo |
201:dd058cec5f28 | 46 | } |
| Seppo Takalo |
201:dd058cec5f28 | 47 | strcpy(buf, str); |
| Seppo Takalo |
201:dd058cec5f28 | 48 | } |
| Seppo Takalo |
201:dd058cec5f28 | 49 | TEST_GROUP(trace) |
| Seppo Takalo |
201:dd058cec5f28 | 50 | { |
| Seppo Takalo |
201:dd058cec5f28 | 51 | void setup() |
| Seppo Takalo |
201:dd058cec5f28 | 52 | { |
| Seppo Takalo |
201:dd058cec5f28 | 53 | |
| Seppo Takalo |
201:dd058cec5f28 | 54 | mbed_trace_init(); |
| Seppo Takalo |
201:dd058cec5f28 | 55 | mbed_trace_config_set(TRACE_MODE_PLAIN|TRACE_ACTIVE_LEVEL_ALL); |
| Seppo Takalo |
201:dd058cec5f28 | 56 | mbed_trace_print_function_set( myprint ); |
| Seppo Takalo |
201:dd058cec5f28 | 57 | mbed_trace_mutex_wait_function_set( my_mutex_wait ); |
| Seppo Takalo |
201:dd058cec5f28 | 58 | mbed_trace_mutex_release_function_set( my_mutex_release ); |
| Seppo Takalo |
201:dd058cec5f28 | 59 | } |
| Seppo Takalo |
201:dd058cec5f28 | 60 | void teardown() |
| Seppo Takalo |
201:dd058cec5f28 | 61 | { |
| Seppo Takalo |
201:dd058cec5f28 | 62 | CHECK(mutex_wait_count == mutex_release_count); // Check the mutex count with every test |
| Seppo Takalo |
201:dd058cec5f28 | 63 | mbed_trace_free(); |
| Seppo Takalo |
201:dd058cec5f28 | 64 | } |
| Seppo Takalo |
201:dd058cec5f28 | 65 | }; |
| Seppo Takalo |
201:dd058cec5f28 | 66 | |
| Seppo Takalo |
201:dd058cec5f28 | 67 | /* Unity test code starts */ |
| Seppo Takalo |
201:dd058cec5f28 | 68 | TEST(trace, MutexNotSet) |
| Seppo Takalo |
201:dd058cec5f28 | 69 | { |
| Seppo Takalo |
201:dd058cec5f28 | 70 | mbed_trace_mutex_wait_function_set( 0 ); |
| Seppo Takalo |
201:dd058cec5f28 | 71 | mbed_trace_mutex_release_function_set( 0 ); |
| Seppo Takalo |
201:dd058cec5f28 | 72 | int mutex_call_count_at_entry = mutex_wait_count; |
| Seppo Takalo |
201:dd058cec5f28 | 73 | check_mutex_lock_status = false; |
| Seppo Takalo |
201:dd058cec5f28 | 74 | |
| Seppo Takalo |
201:dd058cec5f28 | 75 | char expectedStr[] = "Hello hello!"; |
| Seppo Takalo |
201:dd058cec5f28 | 76 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "Hello hello!"); |
| Seppo Takalo |
201:dd058cec5f28 | 77 | STRCMP_EQUAL(expectedStr, buf); |
| Seppo Takalo |
201:dd058cec5f28 | 78 | |
| Seppo Takalo |
201:dd058cec5f28 | 79 | CHECK( mutex_call_count_at_entry == mutex_wait_count ); |
| Seppo Takalo |
201:dd058cec5f28 | 80 | CHECK( mutex_call_count_at_entry == mutex_release_count ); |
| Seppo Takalo |
201:dd058cec5f28 | 81 | |
| Seppo Takalo |
201:dd058cec5f28 | 82 | mbed_trace_mutex_wait_function_set( my_mutex_wait ); |
| Seppo Takalo |
201:dd058cec5f28 | 83 | mbed_trace_mutex_release_function_set( my_mutex_release ); |
| Seppo Takalo |
201:dd058cec5f28 | 84 | check_mutex_lock_status = true; |
| Seppo Takalo |
201:dd058cec5f28 | 85 | } |
| Seppo Takalo |
201:dd058cec5f28 | 86 | |
| Seppo Takalo |
201:dd058cec5f28 | 87 | TEST(trace, Array) |
| Seppo Takalo |
201:dd058cec5f28 | 88 | { |
| Seppo Takalo |
201:dd058cec5f28 | 89 | unsigned char longStr[200] = {0x66}; |
| Seppo Takalo |
201:dd058cec5f28 | 90 | for(int i=0;i<200;i++) {longStr[i] = 0x66; } |
| Seppo Takalo |
201:dd058cec5f28 | 91 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "%s", mbed_trace_array(longStr, 200) ); |
| Seppo Takalo |
201:dd058cec5f28 | 92 | } |
| Seppo Takalo |
201:dd058cec5f28 | 93 | |
| Seppo Takalo |
201:dd058cec5f28 | 94 | TEST(trace, LongString) |
| Seppo Takalo |
201:dd058cec5f28 | 95 | { |
| Seppo Takalo |
201:dd058cec5f28 | 96 | char longStr[1000] = {0x36}; |
| Seppo Takalo |
201:dd058cec5f28 | 97 | for(int i=0;i<999;i++) {longStr[i] = 0x36; } |
| Seppo Takalo |
201:dd058cec5f28 | 98 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "%s", longStr ); |
| Seppo Takalo |
201:dd058cec5f28 | 99 | } |
| Seppo Takalo |
201:dd058cec5f28 | 100 | |
| Seppo Takalo |
201:dd058cec5f28 | 101 | TEST(trace, TooLong) |
| Seppo Takalo |
201:dd058cec5f28 | 102 | { |
| Seppo Takalo |
201:dd058cec5f28 | 103 | #define TOO_LONG_SIZE 9400 |
| Seppo Takalo |
201:dd058cec5f28 | 104 | #define TRACE_LINE_SIZE 1024 |
| Seppo Takalo |
201:dd058cec5f28 | 105 | char longStr[TOO_LONG_SIZE] = {0}; |
| Seppo Takalo |
201:dd058cec5f28 | 106 | for(int i=0;i<TOO_LONG_SIZE;i++) { longStr[i] = 0x36; } |
| Seppo Takalo |
201:dd058cec5f28 | 107 | |
| Seppo Takalo |
201:dd058cec5f28 | 108 | mbed_trace_config_set(TRACE_ACTIVE_LEVEL_ALL); |
| Seppo Takalo |
201:dd058cec5f28 | 109 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "%s", longStr ); |
| Seppo Takalo |
201:dd058cec5f28 | 110 | |
| Seppo Takalo |
201:dd058cec5f28 | 111 | char shouldStr[TRACE_LINE_SIZE] = "[DBG ][mygr]: "; |
| Seppo Takalo |
201:dd058cec5f28 | 112 | for(int i=14;i<TRACE_LINE_SIZE;i++) { shouldStr[i] = 0x36; } |
| Seppo Takalo |
201:dd058cec5f28 | 113 | shouldStr[TRACE_LINE_SIZE-1] = 0; |
| Seppo Takalo |
201:dd058cec5f28 | 114 | STRCMP_EQUAL(shouldStr, buf); |
| Seppo Takalo |
201:dd058cec5f28 | 115 | } |
| Seppo Takalo |
201:dd058cec5f28 | 116 | |
| Seppo Takalo |
201:dd058cec5f28 | 117 | TEST(trace, BufferResize) |
| Seppo Takalo |
201:dd058cec5f28 | 118 | { |
| Seppo Takalo |
201:dd058cec5f28 | 119 | uint8_t arr[20] = {0}; |
| Seppo Takalo |
201:dd058cec5f28 | 120 | memset(arr, '0', 20); |
| Seppo Takalo |
201:dd058cec5f28 | 121 | mbed_trace_buffer_sizes(0, 10); |
| Seppo Takalo |
201:dd058cec5f28 | 122 | STRCMP_EQUAL("30:30:30*", mbed_trace_array(arr, 20)); |
| Seppo Takalo |
201:dd058cec5f28 | 123 | mbed_trace_buffer_sizes(0, 15); |
| Seppo Takalo |
201:dd058cec5f28 | 124 | STRCMP_EQUAL("30:30:30:30*", mbed_trace_array(arr, 20)); |
| Seppo Takalo |
201:dd058cec5f28 | 125 | mbed_trace_buffer_sizes(0, 15); |
| Seppo Takalo |
201:dd058cec5f28 | 126 | STRCMP_EQUAL("30:30:30:30", mbed_trace_array(arr, 4)); |
| Seppo Takalo |
201:dd058cec5f28 | 127 | |
| Seppo Takalo |
201:dd058cec5f28 | 128 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "flush buffers and locks"); |
| Seppo Takalo |
201:dd058cec5f28 | 129 | } |
| Seppo Takalo |
201:dd058cec5f28 | 130 | |
| Seppo Takalo |
201:dd058cec5f28 | 131 | #if YOTTA_CFG_MBED_TRACE_FEA_IPV6 == 1 |
| Seppo Takalo |
201:dd058cec5f28 | 132 | ip6tos_stub_def_t ip6tos_stub; // extern variable |
| Seppo Takalo |
201:dd058cec5f28 | 133 | |
| Seppo Takalo |
201:dd058cec5f28 | 134 | TEST(trace, ipv6) |
| Seppo Takalo |
201:dd058cec5f28 | 135 | { |
| Seppo Takalo |
201:dd058cec5f28 | 136 | uint8_t prefix[] = { 0x14, 0x6e, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00 }; |
| Seppo Takalo |
201:dd058cec5f28 | 137 | int prefix_len = 64; |
| Seppo Takalo |
201:dd058cec5f28 | 138 | |
| Seppo Takalo |
201:dd058cec5f28 | 139 | char expected_str1[] = "146e:a00::/64"; |
| Seppo Takalo |
201:dd058cec5f28 | 140 | ip6tos_stub.output_string = "146e:a00::/64"; |
| Seppo Takalo |
201:dd058cec5f28 | 141 | char *str = mbed_trace_ipv6_prefix(prefix, prefix_len); |
| Seppo Takalo |
201:dd058cec5f28 | 142 | CHECK(memcmp(ip6tos_stub.input_array, prefix, 8) == 0); |
| Seppo Takalo |
201:dd058cec5f28 | 143 | STRCMP_EQUAL(expected_str1, str); |
| Seppo Takalo |
201:dd058cec5f28 | 144 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "flush buffers and locks"); |
| Seppo Takalo |
201:dd058cec5f28 | 145 | |
| Seppo Takalo |
201:dd058cec5f28 | 146 | char expected_str2[] = "::/0"; |
| Seppo Takalo |
201:dd058cec5f28 | 147 | ip6tos_stub.output_string = "::/0"; |
| Seppo Takalo |
201:dd058cec5f28 | 148 | str = mbed_trace_ipv6_prefix(NULL, 0); |
| Seppo Takalo |
201:dd058cec5f28 | 149 | STRCMP_EQUAL(expected_str2, str); |
| Seppo Takalo |
201:dd058cec5f28 | 150 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "flush buffers and locks"); |
| Seppo Takalo |
201:dd058cec5f28 | 151 | |
| Seppo Takalo |
201:dd058cec5f28 | 152 | char expected_str3[] = "<err>"; |
| Seppo Takalo |
201:dd058cec5f28 | 153 | str = mbed_trace_ipv6_prefix(NULL, 1); |
| Seppo Takalo |
201:dd058cec5f28 | 154 | STRCMP_EQUAL(expected_str3, str); |
| Seppo Takalo |
201:dd058cec5f28 | 155 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "flush buffers and locks"); |
| Seppo Takalo |
201:dd058cec5f28 | 156 | |
| Seppo Takalo |
201:dd058cec5f28 | 157 | char expected_str4[] = "<err>"; |
| Seppo Takalo |
201:dd058cec5f28 | 158 | str = mbed_trace_ipv6_prefix(prefix, 200); |
| Seppo Takalo |
201:dd058cec5f28 | 159 | STRCMP_EQUAL(expected_str4, str); |
| Seppo Takalo |
201:dd058cec5f28 | 160 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "flush buffers and locks"); |
| Seppo Takalo |
201:dd058cec5f28 | 161 | |
| Seppo Takalo |
201:dd058cec5f28 | 162 | char expected_str5[] = ""; |
| Seppo Takalo |
201:dd058cec5f28 | 163 | ip6tos_stub.output_string = "0123456789012345678901234567890123456789"; |
| Seppo Takalo |
201:dd058cec5f28 | 164 | str = mbed_trace_ipv6_prefix(prefix, 64); // Fill the tmp_data buffer |
| Seppo Takalo |
201:dd058cec5f28 | 165 | str = mbed_trace_ipv6_prefix(prefix, 64); |
| Seppo Takalo |
201:dd058cec5f28 | 166 | str = mbed_trace_ipv6_prefix(prefix, 64); |
| Seppo Takalo |
201:dd058cec5f28 | 167 | str = mbed_trace_ipv6_prefix(prefix, 64); |
| Seppo Takalo |
201:dd058cec5f28 | 168 | STRCMP_EQUAL(expected_str5, str); |
| Seppo Takalo |
201:dd058cec5f28 | 169 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "flush buffers and locks"); |
| Seppo Takalo |
201:dd058cec5f28 | 170 | } |
| Seppo Takalo |
201:dd058cec5f28 | 171 | |
| Seppo Takalo |
201:dd058cec5f28 | 172 | TEST(trace, active_level_all_ipv6) |
| Seppo Takalo |
201:dd058cec5f28 | 173 | { |
| Seppo Takalo |
201:dd058cec5f28 | 174 | mbed_trace_config_set(TRACE_ACTIVE_LEVEL_ALL); |
| Seppo Takalo |
201:dd058cec5f28 | 175 | |
| Seppo Takalo |
201:dd058cec5f28 | 176 | uint8_t arr[] = { 0x20, 0x01, 0xd, 0xb8, 0,0,0,0,0,1,0,0,0,0,0,1 }; |
| Seppo Takalo |
201:dd058cec5f28 | 177 | ip6tos_stub.output_string = "2001:db8::1:0:0:1"; |
| Seppo Takalo |
201:dd058cec5f28 | 178 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "my addr: %s", mbed_trace_ipv6(arr)); |
| Seppo Takalo |
201:dd058cec5f28 | 179 | CHECK(memcmp(ip6tos_stub.input_array, arr, 16) == 0); |
| Seppo Takalo |
201:dd058cec5f28 | 180 | STRCMP_EQUAL("[DBG ][mygr]: my addr: 2001:db8::1:0:0:1", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 181 | } |
| Seppo Takalo |
201:dd058cec5f28 | 182 | #endif //YOTTA_CFG_MBED_TRACE_FEA_IPV6 |
| Seppo Takalo |
201:dd058cec5f28 | 183 | |
| Seppo Takalo |
201:dd058cec5f28 | 184 | TEST(trace, config_change) |
| Seppo Takalo |
201:dd058cec5f28 | 185 | { |
| Seppo Takalo |
201:dd058cec5f28 | 186 | mbed_trace_config_set(TRACE_MODE_COLOR|TRACE_ACTIVE_LEVEL_ALL); |
| Seppo Takalo |
201:dd058cec5f28 | 187 | CHECK(mbed_trace_config_get() == TRACE_MODE_COLOR|TRACE_ACTIVE_LEVEL_ALL); |
| Seppo Takalo |
201:dd058cec5f28 | 188 | mbed_trace_config_set(TRACE_MODE_PLAIN|TRACE_ACTIVE_LEVEL_NONE); |
| Seppo Takalo |
201:dd058cec5f28 | 189 | CHECK(mbed_trace_config_get() == TRACE_MODE_PLAIN|TRACE_ACTIVE_LEVEL_NONE); |
| Seppo Takalo |
201:dd058cec5f28 | 190 | mbed_trace_config_set(TRACE_MODE_PLAIN|TRACE_ACTIVE_LEVEL_ALL); |
| Seppo Takalo |
201:dd058cec5f28 | 191 | CHECK(mbed_trace_config_get() == TRACE_MODE_PLAIN|TRACE_ACTIVE_LEVEL_ALL); |
| Seppo Takalo |
201:dd058cec5f28 | 192 | } |
| Seppo Takalo |
201:dd058cec5f28 | 193 | |
| Seppo Takalo |
201:dd058cec5f28 | 194 | TEST(trace, active_level_all_color) |
| Seppo Takalo |
201:dd058cec5f28 | 195 | { |
| Seppo Takalo |
201:dd058cec5f28 | 196 | mbed_trace_config_set(TRACE_MODE_COLOR|TRACE_ACTIVE_LEVEL_ALL); |
| Seppo Takalo |
201:dd058cec5f28 | 197 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "hello"); |
| Seppo Takalo |
201:dd058cec5f28 | 198 | STRCMP_EQUAL("\x1b[90m[DBG ][mygr]: hello\x1b[0m", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 199 | mbed_tracef(TRACE_LEVEL_INFO, "mygr", "to one"); |
| Seppo Takalo |
201:dd058cec5f28 | 200 | STRCMP_EQUAL("\x1b[39m[INFO][mygr]: to one\x1b[0m", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 201 | mbed_tracef(TRACE_LEVEL_WARN, "mygr", "and all"); |
| Seppo Takalo |
201:dd058cec5f28 | 202 | STRCMP_EQUAL("\x1b[33m[WARN][mygr]: and all\x1b[0m", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 203 | mbed_tracef(TRACE_LEVEL_ERROR, "mygr", "even you"); |
| Seppo Takalo |
201:dd058cec5f28 | 204 | STRCMP_EQUAL("\x1b[31m[ERR ][mygr]: even you\x1b[0m", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 205 | } |
| Seppo Takalo |
201:dd058cec5f28 | 206 | |
| Seppo Takalo |
201:dd058cec5f28 | 207 | TEST(trace, change_levels) |
| Seppo Takalo |
201:dd058cec5f28 | 208 | { |
| Seppo Takalo |
201:dd058cec5f28 | 209 | mbed_trace_config_set(TRACE_ACTIVE_LEVEL_DEBUG); |
| Seppo Takalo |
201:dd058cec5f28 | 210 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "hep"); |
| Seppo Takalo |
201:dd058cec5f28 | 211 | STRCMP_EQUAL("[DBG ][mygr]: hep", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 212 | |
| Seppo Takalo |
201:dd058cec5f28 | 213 | mbed_trace_config_set(TRACE_ACTIVE_LEVEL_DEBUG|TRACE_MODE_PLAIN); |
| Seppo Takalo |
201:dd058cec5f28 | 214 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "hep"); |
| Seppo Takalo |
201:dd058cec5f28 | 215 | STRCMP_EQUAL("hep", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 216 | |
| Seppo Takalo |
201:dd058cec5f28 | 217 | mbed_trace_config_set(TRACE_ACTIVE_LEVEL_DEBUG|TRACE_MODE_COLOR); |
| Seppo Takalo |
201:dd058cec5f28 | 218 | mbed_tracef(TRACE_LEVEL_ERROR, "mygr", "hep"); |
| Seppo Takalo |
201:dd058cec5f28 | 219 | STRCMP_EQUAL("\x1b[31m[ERR ][mygr]: hep\x1b[0m", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 220 | |
| Seppo Takalo |
201:dd058cec5f28 | 221 | } |
| Seppo Takalo |
201:dd058cec5f28 | 222 | |
| Seppo Takalo |
201:dd058cec5f28 | 223 | TEST(trace, active_level_debug) |
| Seppo Takalo |
201:dd058cec5f28 | 224 | { |
| Seppo Takalo |
201:dd058cec5f28 | 225 | mbed_trace_config_set(TRACE_ACTIVE_LEVEL_DEBUG); |
| Seppo Takalo |
201:dd058cec5f28 | 226 | |
| Seppo Takalo |
201:dd058cec5f28 | 227 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "hep"); |
| Seppo Takalo |
201:dd058cec5f28 | 228 | STRCMP_EQUAL("[DBG ][mygr]: hep", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 229 | |
| Seppo Takalo |
201:dd058cec5f28 | 230 | mbed_tracef(TRACE_LEVEL_INFO, "mygr", "test"); |
| Seppo Takalo |
201:dd058cec5f28 | 231 | STRCMP_EQUAL("[INFO][mygr]: test", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 232 | |
| Seppo Takalo |
201:dd058cec5f28 | 233 | mbed_tracef(TRACE_LEVEL_WARN, "mygr", "hups"); |
| Seppo Takalo |
201:dd058cec5f28 | 234 | STRCMP_EQUAL("[WARN][mygr]: hups", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 235 | |
| Seppo Takalo |
201:dd058cec5f28 | 236 | mbed_tracef(TRACE_LEVEL_ERROR, "mygr", "o'ou"); |
| Seppo Takalo |
201:dd058cec5f28 | 237 | STRCMP_EQUAL("[ERR ][mygr]: o'ou", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 238 | } |
| Seppo Takalo |
201:dd058cec5f28 | 239 | |
| Seppo Takalo |
201:dd058cec5f28 | 240 | TEST(trace, active_level_info) |
| Seppo Takalo |
201:dd058cec5f28 | 241 | { |
| Seppo Takalo |
201:dd058cec5f28 | 242 | buf[0] = 0; |
| Seppo Takalo |
201:dd058cec5f28 | 243 | mbed_trace_config_set(TRACE_ACTIVE_LEVEL_INFO); |
| Seppo Takalo |
201:dd058cec5f28 | 244 | |
| Seppo Takalo |
201:dd058cec5f28 | 245 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "hep"); |
| Seppo Takalo |
201:dd058cec5f28 | 246 | STRCMP_EQUAL("", mbed_trace_last()); |
| Seppo Takalo |
201:dd058cec5f28 | 247 | |
| Seppo Takalo |
201:dd058cec5f28 | 248 | mbed_tracef(TRACE_LEVEL_INFO, "mygr", "test"); |
| Seppo Takalo |
201:dd058cec5f28 | 249 | STRCMP_EQUAL("[INFO][mygr]: test", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 250 | |
| Seppo Takalo |
201:dd058cec5f28 | 251 | mbed_tracef(TRACE_LEVEL_WARN, "mygr", "hups"); |
| Seppo Takalo |
201:dd058cec5f28 | 252 | STRCMP_EQUAL("[WARN][mygr]: hups", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 253 | |
| Seppo Takalo |
201:dd058cec5f28 | 254 | mbed_tracef(TRACE_LEVEL_ERROR, "mygr", "o'ou"); |
| Seppo Takalo |
201:dd058cec5f28 | 255 | STRCMP_EQUAL("[ERR ][mygr]: o'ou", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 256 | } |
| Seppo Takalo |
201:dd058cec5f28 | 257 | |
| Seppo Takalo |
201:dd058cec5f28 | 258 | TEST(trace, active_level_warn) |
| Seppo Takalo |
201:dd058cec5f28 | 259 | { |
| Seppo Takalo |
201:dd058cec5f28 | 260 | mbed_trace_config_set(TRACE_ACTIVE_LEVEL_WARN); |
| Seppo Takalo |
201:dd058cec5f28 | 261 | |
| Seppo Takalo |
201:dd058cec5f28 | 262 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "hep"); |
| Seppo Takalo |
201:dd058cec5f28 | 263 | STRCMP_EQUAL("", mbed_trace_last()); |
| Seppo Takalo |
201:dd058cec5f28 | 264 | |
| Seppo Takalo |
201:dd058cec5f28 | 265 | mbed_tracef(TRACE_LEVEL_INFO, "mygr", "test"); |
| Seppo Takalo |
201:dd058cec5f28 | 266 | STRCMP_EQUAL("", mbed_trace_last()); |
| Seppo Takalo |
201:dd058cec5f28 | 267 | |
| Seppo Takalo |
201:dd058cec5f28 | 268 | mbed_tracef(TRACE_LEVEL_WARN, "mygr", "hups"); |
| Seppo Takalo |
201:dd058cec5f28 | 269 | STRCMP_EQUAL("[WARN][mygr]: hups", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 270 | |
| Seppo Takalo |
201:dd058cec5f28 | 271 | mbed_tracef(TRACE_LEVEL_ERROR, "mygr", "o'ou"); |
| Seppo Takalo |
201:dd058cec5f28 | 272 | STRCMP_EQUAL("[ERR ][mygr]: o'ou", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 273 | } |
| Seppo Takalo |
201:dd058cec5f28 | 274 | |
| Seppo Takalo |
201:dd058cec5f28 | 275 | TEST(trace, active_level_error) |
| Seppo Takalo |
201:dd058cec5f28 | 276 | { |
| Seppo Takalo |
201:dd058cec5f28 | 277 | mbed_trace_config_set(TRACE_ACTIVE_LEVEL_ERROR); |
| Seppo Takalo |
201:dd058cec5f28 | 278 | |
| Seppo Takalo |
201:dd058cec5f28 | 279 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "hep"); |
| Seppo Takalo |
201:dd058cec5f28 | 280 | STRCMP_EQUAL("", mbed_trace_last()); |
| Seppo Takalo |
201:dd058cec5f28 | 281 | |
| Seppo Takalo |
201:dd058cec5f28 | 282 | mbed_tracef(TRACE_LEVEL_INFO, "mygr", "test"); |
| Seppo Takalo |
201:dd058cec5f28 | 283 | STRCMP_EQUAL("", mbed_trace_last()); |
| Seppo Takalo |
201:dd058cec5f28 | 284 | |
| Seppo Takalo |
201:dd058cec5f28 | 285 | mbed_tracef(TRACE_LEVEL_WARN, "mygr", "hups"); |
| Seppo Takalo |
201:dd058cec5f28 | 286 | STRCMP_EQUAL("", mbed_trace_last()); |
| Seppo Takalo |
201:dd058cec5f28 | 287 | |
| Seppo Takalo |
201:dd058cec5f28 | 288 | mbed_tracef(TRACE_LEVEL_ERROR, "mygr", "o'ou"); |
| Seppo Takalo |
201:dd058cec5f28 | 289 | STRCMP_EQUAL("[ERR ][mygr]: o'ou", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 290 | } |
| Seppo Takalo |
201:dd058cec5f28 | 291 | TEST(trace, active_level_none) |
| Seppo Takalo |
201:dd058cec5f28 | 292 | { |
| Seppo Takalo |
201:dd058cec5f28 | 293 | mbed_trace_config_set(TRACE_ACTIVE_LEVEL_NONE); |
| Seppo Takalo |
201:dd058cec5f28 | 294 | |
| Seppo Takalo |
201:dd058cec5f28 | 295 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "hep"); |
| Seppo Takalo |
201:dd058cec5f28 | 296 | STRCMP_EQUAL("", mbed_trace_last()); |
| Seppo Takalo |
201:dd058cec5f28 | 297 | |
| Seppo Takalo |
201:dd058cec5f28 | 298 | mbed_tracef(TRACE_LEVEL_INFO, "mygr", "test"); |
| Seppo Takalo |
201:dd058cec5f28 | 299 | STRCMP_EQUAL("", mbed_trace_last()); |
| Seppo Takalo |
201:dd058cec5f28 | 300 | |
| Seppo Takalo |
201:dd058cec5f28 | 301 | mbed_tracef(TRACE_LEVEL_WARN, "mygr", "hups"); |
| Seppo Takalo |
201:dd058cec5f28 | 302 | STRCMP_EQUAL("", mbed_trace_last()); |
| Seppo Takalo |
201:dd058cec5f28 | 303 | |
| Seppo Takalo |
201:dd058cec5f28 | 304 | mbed_tracef(TRACE_LEVEL_ERROR, "mygr", "o'ou"); |
| Seppo Takalo |
201:dd058cec5f28 | 305 | STRCMP_EQUAL("", mbed_trace_last()); |
| Seppo Takalo |
201:dd058cec5f28 | 306 | } |
| Seppo Takalo |
201:dd058cec5f28 | 307 | |
| Seppo Takalo |
201:dd058cec5f28 | 308 | TEST(trace, active_level_all_1) |
| Seppo Takalo |
201:dd058cec5f28 | 309 | { |
| Seppo Takalo |
201:dd058cec5f28 | 310 | mbed_trace_config_set(TRACE_ACTIVE_LEVEL_ALL); |
| Seppo Takalo |
201:dd058cec5f28 | 311 | mbed_trace_exclude_filters_set((char*)"mygr"); |
| Seppo Takalo |
201:dd058cec5f28 | 312 | |
| Seppo Takalo |
201:dd058cec5f28 | 313 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygu", "hep"); |
| Seppo Takalo |
201:dd058cec5f28 | 314 | STRCMP_EQUAL("[DBG ][mygu]: hep", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 315 | |
| Seppo Takalo |
201:dd058cec5f28 | 316 | mbed_tracef(TRACE_LEVEL_INFO, "mygr", "test"); |
| Seppo Takalo |
201:dd058cec5f28 | 317 | STRCMP_EQUAL("", mbed_trace_last()); |
| Seppo Takalo |
201:dd058cec5f28 | 318 | } |
| Seppo Takalo |
201:dd058cec5f28 | 319 | TEST(trace, active_level_all_2) |
| Seppo Takalo |
201:dd058cec5f28 | 320 | { |
| Seppo Takalo |
201:dd058cec5f28 | 321 | mbed_trace_config_set(TRACE_ACTIVE_LEVEL_ALL); |
| Seppo Takalo |
201:dd058cec5f28 | 322 | mbed_trace_exclude_filters_set((char*)"mygr,mygu"); |
| Seppo Takalo |
201:dd058cec5f28 | 323 | |
| Seppo Takalo |
201:dd058cec5f28 | 324 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygu", "hep"); |
| Seppo Takalo |
201:dd058cec5f28 | 325 | STRCMP_EQUAL("", mbed_trace_last()); |
| Seppo Takalo |
201:dd058cec5f28 | 326 | |
| Seppo Takalo |
201:dd058cec5f28 | 327 | mbed_tracef(TRACE_LEVEL_INFO, "mygr", "test"); |
| Seppo Takalo |
201:dd058cec5f28 | 328 | STRCMP_EQUAL("", mbed_trace_last()); |
| Seppo Takalo |
201:dd058cec5f28 | 329 | } |
| Seppo Takalo |
201:dd058cec5f28 | 330 | TEST(trace, active_level_all_3) |
| Seppo Takalo |
201:dd058cec5f28 | 331 | { |
| Seppo Takalo |
201:dd058cec5f28 | 332 | mbed_trace_config_set(TRACE_ACTIVE_LEVEL_ALL); |
| Seppo Takalo |
201:dd058cec5f28 | 333 | mbed_trace_include_filters_set((char*)"mygr"); |
| Seppo Takalo |
201:dd058cec5f28 | 334 | |
| Seppo Takalo |
201:dd058cec5f28 | 335 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygu", "hep"); |
| Seppo Takalo |
201:dd058cec5f28 | 336 | STRCMP_EQUAL("", mbed_trace_last()); |
| Seppo Takalo |
201:dd058cec5f28 | 337 | |
| Seppo Takalo |
201:dd058cec5f28 | 338 | mbed_tracef(TRACE_LEVEL_INFO, "mygr", "test"); |
| Seppo Takalo |
201:dd058cec5f28 | 339 | STRCMP_EQUAL("[INFO][mygr]: test", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 340 | } |
| Seppo Takalo |
201:dd058cec5f28 | 341 | |
| Seppo Takalo |
201:dd058cec5f28 | 342 | TEST(trace, active_level_all_array) |
| Seppo Takalo |
201:dd058cec5f28 | 343 | { |
| Seppo Takalo |
201:dd058cec5f28 | 344 | mbed_trace_config_set(TRACE_ACTIVE_LEVEL_ALL); |
| Seppo Takalo |
201:dd058cec5f28 | 345 | |
| Seppo Takalo |
201:dd058cec5f28 | 346 | uint8_t arr[] = {0x01, 0x02, 0x03}; |
| Seppo Takalo |
201:dd058cec5f28 | 347 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "my addr: %s", mbed_trace_array(arr, 3)); |
| Seppo Takalo |
201:dd058cec5f28 | 348 | STRCMP_EQUAL("[DBG ][mygr]: my addr: 01:02:03", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 349 | } |
| Seppo Takalo |
201:dd058cec5f28 | 350 | |
| Seppo Takalo |
201:dd058cec5f28 | 351 | |
| Seppo Takalo |
201:dd058cec5f28 | 352 | size_t time_length; |
| Seppo Takalo |
201:dd058cec5f28 | 353 | char trace_prefix_str[] = "[<TIME>]"; |
| Seppo Takalo |
201:dd058cec5f28 | 354 | char* trace_prefix(size_t length){ |
| Seppo Takalo |
201:dd058cec5f28 | 355 | time_length = length; |
| Seppo Takalo |
201:dd058cec5f28 | 356 | return trace_prefix_str; |
| Seppo Takalo |
201:dd058cec5f28 | 357 | } |
| Seppo Takalo |
201:dd058cec5f28 | 358 | TEST(trace, prefix) |
| Seppo Takalo |
201:dd058cec5f28 | 359 | { |
| Seppo Takalo |
201:dd058cec5f28 | 360 | mbed_trace_config_set(TRACE_ACTIVE_LEVEL_ALL); |
| Seppo Takalo |
201:dd058cec5f28 | 361 | mbed_trace_prefix_function_set( &trace_prefix ); |
| Seppo Takalo |
201:dd058cec5f28 | 362 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "test %d %d", 1, 2); |
| Seppo Takalo |
201:dd058cec5f28 | 363 | STRCMP_EQUAL("[<TIME>][DBG ][mygr]: test 1 2", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 364 | //TEST_ASSERT_EQUAL_INT(4, time_length); |
| Seppo Takalo |
201:dd058cec5f28 | 365 | |
| Seppo Takalo |
201:dd058cec5f28 | 366 | mbed_trace_config_set(TRACE_ACTIVE_LEVEL_ALL|TRACE_MODE_PLAIN); |
| Seppo Takalo |
201:dd058cec5f28 | 367 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "test"); |
| Seppo Takalo |
201:dd058cec5f28 | 368 | STRCMP_EQUAL("test", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 369 | |
| Seppo Takalo |
201:dd058cec5f28 | 370 | mbed_trace_config_set(TRACE_ACTIVE_LEVEL_ALL|TRACE_MODE_COLOR); |
| Seppo Takalo |
201:dd058cec5f28 | 371 | mbed_tracef(TRACE_LEVEL_ERROR, "mygr", "test"); |
| Seppo Takalo |
201:dd058cec5f28 | 372 | STRCMP_EQUAL("\x1b[31m[<TIME>][ERR ][mygr]: test\x1b[0m", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 373 | } |
| Seppo Takalo |
201:dd058cec5f28 | 374 | char trace_suffix_str[] = "[END]"; |
| Seppo Takalo |
201:dd058cec5f28 | 375 | char* trace_suffix() |
| Seppo Takalo |
201:dd058cec5f28 | 376 | { |
| Seppo Takalo |
201:dd058cec5f28 | 377 | return trace_suffix_str; |
| Seppo Takalo |
201:dd058cec5f28 | 378 | } |
| Seppo Takalo |
201:dd058cec5f28 | 379 | TEST(trace, suffix) |
| Seppo Takalo |
201:dd058cec5f28 | 380 | { |
| Seppo Takalo |
201:dd058cec5f28 | 381 | mbed_trace_config_set(TRACE_ACTIVE_LEVEL_ALL); |
| Seppo Takalo |
201:dd058cec5f28 | 382 | mbed_trace_prefix_function_set( &trace_prefix ); |
| Seppo Takalo |
201:dd058cec5f28 | 383 | mbed_trace_suffix_function_set( &trace_suffix ); |
| Seppo Takalo |
201:dd058cec5f28 | 384 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "test"); |
| Seppo Takalo |
201:dd058cec5f28 | 385 | STRCMP_EQUAL("[<TIME>][DBG ][mygr]: test[END]", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 386 | } |
| Seppo Takalo |
201:dd058cec5f28 | 387 | TEST(trace, formatting) |
| Seppo Takalo |
201:dd058cec5f28 | 388 | { |
| Seppo Takalo |
201:dd058cec5f28 | 389 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "hello %d %d %.1f", 12, 13, 5.5); |
| Seppo Takalo |
201:dd058cec5f28 | 390 | STRCMP_EQUAL("hello 12 13 5.5", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 391 | |
| Seppo Takalo |
201:dd058cec5f28 | 392 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "hello %d %d %d %d %d %d", 12, 13, 5, 6, 8, 9); |
| Seppo Takalo |
201:dd058cec5f28 | 393 | STRCMP_EQUAL("hello 12 13 5 6 8 9", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 394 | |
| Seppo Takalo |
201:dd058cec5f28 | 395 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "HOH %d HAH %d %d %d %d %d", 12, 13, 5, 6, 8, 9); |
| Seppo Takalo |
201:dd058cec5f28 | 396 | STRCMP_EQUAL("HOH 12 HAH 13 5 6 8 9", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 397 | } |
| Seppo Takalo |
201:dd058cec5f28 | 398 | TEST(trace, filters_control) |
| Seppo Takalo |
201:dd058cec5f28 | 399 | { |
| Seppo Takalo |
201:dd058cec5f28 | 400 | mbed_trace_include_filters_set((char*)"hello"); |
| Seppo Takalo |
201:dd058cec5f28 | 401 | STRCMP_EQUAL("hello", mbed_trace_include_filters_get()); |
| Seppo Takalo |
201:dd058cec5f28 | 402 | |
| Seppo Takalo |
201:dd058cec5f28 | 403 | mbed_trace_include_filters_set(0); |
| Seppo Takalo |
201:dd058cec5f28 | 404 | STRCMP_EQUAL("", mbed_trace_include_filters_get()); |
| Seppo Takalo |
201:dd058cec5f28 | 405 | |
| Seppo Takalo |
201:dd058cec5f28 | 406 | mbed_trace_exclude_filters_set((char*)"hello"); |
| Seppo Takalo |
201:dd058cec5f28 | 407 | STRCMP_EQUAL("hello", mbed_trace_exclude_filters_get()); |
| Seppo Takalo |
201:dd058cec5f28 | 408 | |
| Seppo Takalo |
201:dd058cec5f28 | 409 | mbed_trace_exclude_filters_set(0); |
| Seppo Takalo |
201:dd058cec5f28 | 410 | STRCMP_EQUAL("", mbed_trace_exclude_filters_get()); |
| Seppo Takalo |
201:dd058cec5f28 | 411 | } |
| Seppo Takalo |
201:dd058cec5f28 | 412 | TEST(trace, no_printer) |
| Seppo Takalo |
201:dd058cec5f28 | 413 | { |
| Seppo Takalo |
201:dd058cec5f28 | 414 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "hello"); |
| Seppo Takalo |
201:dd058cec5f28 | 415 | STRCMP_EQUAL("hello", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 416 | |
| Seppo Takalo |
201:dd058cec5f28 | 417 | mbed_trace_print_function_set(NULL); |
| Seppo Takalo |
201:dd058cec5f28 | 418 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "this shoudnt be printed because printer is missing"); |
| Seppo Takalo |
201:dd058cec5f28 | 419 | STRCMP_EQUAL("hello", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 420 | } |
| Seppo Takalo |
201:dd058cec5f28 | 421 | TEST(trace, uninitialized) |
| Seppo Takalo |
201:dd058cec5f28 | 422 | { |
| Seppo Takalo |
201:dd058cec5f28 | 423 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "hello"); |
| Seppo Takalo |
201:dd058cec5f28 | 424 | STRCMP_EQUAL("hello", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 425 | |
| Seppo Takalo |
201:dd058cec5f28 | 426 | mbed_trace_free(); |
| Seppo Takalo |
201:dd058cec5f28 | 427 | |
| Seppo Takalo |
201:dd058cec5f28 | 428 | mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "this shoudnt be printed because mtrace is not initialized"); |
| Seppo Takalo |
201:dd058cec5f28 | 429 | STRCMP_EQUAL("hello", buf); |
| Seppo Takalo |
201:dd058cec5f28 | 430 | } |
| Seppo Takalo |
201:dd058cec5f28 | 431 |