| 83 | } |
| 84 | |
| 85 | void testFSTR(Print& out) |
| 86 | { |
| 87 | // Demonstrate direct reading of a flashstring |
| 88 | char buffer[1024]; |
| 89 | auto len = demoFSTR1.readFlash(0, buffer, sizeof(buffer)); |
| 90 | out.print("demoFSTR1.read(): "); |
| 91 | out.write(buffer, len); |
| 92 | out.println(); |
| 93 | |
| 94 | // Implicit conversion of FlashString to String; entire content (including nuls) loaded |
| 95 | out.print("> demoFSTR1 (print String): "); |
| 96 | out.print('"'); |
| 97 | out.print(demoFSTR1); |
| 98 | out.println('"'); |
| 99 | |
| 100 | // Load the FlashString into a stack buffer |
| 101 | out.print("> demoFSTR1 (print char*): "); |
| 102 | LOAD_FSTR(test, demoFSTR1); |
| 103 | out.print('"'); |
| 104 | out.print(test); |
| 105 | out.println('"'); |
| 106 | |
| 107 | out.print("> demoFSTR1 (write): "); |
| 108 | out.print('"'); |
| 109 | out.write(test, demoFSTR1.length()); |
| 110 | out.println('"'); |
| 111 | |
| 112 | // FlashString defined in another module |
| 113 | out.print("> externalFSTR1 (print): "); |
| 114 | out.print('"'); |
| 115 | out.print(externalFSTR1); |
| 116 | out.println('"'); |
| 117 | |
| 118 | // Define a FlashString and load it into a stack buffer in one operation (non-reusable!) |
| 119 | out.print("> FSTR_ARRAY: "); |
| 120 | FSTR_ARRAY(fsarr, DEMO_TEST_TEXT); |
| 121 | out.print('"'); |
| 122 | out.write(fsarr, sizeof(fsarr) - 1); |
| 123 | out.println('"'); |
| 124 | |
| 125 | // Example of array or custom data usage |
| 126 | out.print("> demoArray1 : "); |
| 127 | static constexpr const struct { |
| 128 | FSTR::ObjectBase object; |
| 129 | char data[5]; |
| 130 | } demoArray1 PROGMEM = {{5}, {1, 2, 3, 4, 5}}; |
| 131 | auto& arr = demoArray1.object.as<FSTR::Array<uint8_t>>(); |
| 132 | out << arr << endl; |
| 133 | |
| 134 | // Test equality operators |
| 135 | #define TEST(_test) out.printf(_F("%s: %s\n"), (_test) ? _F("PASS") : _F("FAIL"), _F(#_test)); |
| 136 | TEST(demoFSTR1 == demoFSTR2) |
| 137 | { |
| 138 | LOAD_PSTR(s, demoPSTR1); |
| 139 | TEST(demoFSTR1 != s) |
| 140 | } |
| 141 | TEST(String(demoFSTR1) == demoFSTR2) |
| 142 | TEST(demoFSTR1 == String(demoFSTR2)) |