Holger Hans Peter Freyther | b79a148 | 2014-01-02 13:55:00 +0100 | [diff] [blame] | 1 | Plain dump |
| 2 | 00 01 02 03 |
Neels Hofmeyr | 0423b61 | 2019-01-14 23:32:53 +0100 | [diff] [blame] | 3 | 00010203 |
Holger Hans Peter Freyther | b79a148 | 2014-01-02 13:55:00 +0100 | [diff] [blame] | 4 | Corner case |
| 5 | 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f 80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 ba bb bc bd be bf c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 da db dc dd de df e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ff 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f 80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 ba bb bc bd be bf c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 da db dc dd de df e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ff 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f 80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 ba bb bc bd be bf c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 da db dc dd de df e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ff 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f 80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 ba bb bc bd be bf c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 da db dc dd de df e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ff 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f 80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 ba bb bc bd be bf c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 da db dc dd de df e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ff 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 |
Nils O. SelÄsdal | 3244702 | 2014-01-02 14:04:43 +0100 | [diff] [blame] | 6 | 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfe |
Neels Hofmeyr | 0423b61 | 2019-01-14 23:32:53 +0100 | [diff] [blame] | 7 | osmo_hexdump_buf(buf, sizeof(buf), data, 4, "[delim]", false) |
| 8 | = "00[delim]01[delim]02[delim]03" |
| 9 | osmo_hexdump_buf(buf, sizeof(buf), data, 4, "[delim]", true) |
| 10 | = "00[delim]01[delim]02[delim]03[delim]" |
| 11 | osmo_hexdump_buf(buf, 6, data, 4, "[delim]", false) |
| 12 | = "" |
| 13 | osmo_hexdump_buf(buf, 7, data, 4, "[delim]", false) |
| 14 | = "" |
| 15 | osmo_hexdump_buf(buf, 8, data, 4, "[delim]", false) |
| 16 | = "" |
| 17 | osmo_hexdump_buf(buf, 6, data, 4, "[delim]", true) |
| 18 | = "" |
| 19 | osmo_hexdump_buf(buf, 7, data, 4, "[delim]", true) |
| 20 | = "" |
| 21 | osmo_hexdump_buf(buf, 8, data, 4, "[delim]", true) |
| 22 | = "" |
| 23 | osmo_hexdump_buf(buf, sizeof(buf), data, 4, " ", false) |
| 24 | = "00 01 02 03" |
| 25 | osmo_hexdump_buf(buf, sizeof(buf), data, 4, " ", true) |
| 26 | = "00 01 02 03 " |
| 27 | osmo_hexdump_buf(buf, 6, data, 4, " ", false) |
| 28 | = "00 " |
| 29 | osmo_hexdump_buf(buf, 7, data, 4, " ", false) |
| 30 | = "00 01 " |
| 31 | osmo_hexdump_buf(buf, 8, data, 4, " ", false) |
| 32 | = "00 01 " |
| 33 | osmo_hexdump_buf(buf, 6, data, 4, " ", true) |
| 34 | = "00 " |
| 35 | osmo_hexdump_buf(buf, 7, data, 4, " ", true) |
| 36 | = "00 01 " |
| 37 | osmo_hexdump_buf(buf, 8, data, 4, " ", true) |
| 38 | = "00 01 " |
| 39 | osmo_hexdump_buf(buf, sizeof(buf), data, 4, ":", false) |
| 40 | = "00:01:02:03" |
| 41 | osmo_hexdump_buf(buf, sizeof(buf), data, 4, ":", true) |
| 42 | = "00:01:02:03:" |
| 43 | osmo_hexdump_buf(buf, 6, data, 4, ":", false) |
| 44 | = "00:" |
| 45 | osmo_hexdump_buf(buf, 7, data, 4, ":", false) |
| 46 | = "00:01:" |
| 47 | osmo_hexdump_buf(buf, 8, data, 4, ":", false) |
| 48 | = "00:01:" |
| 49 | osmo_hexdump_buf(buf, 6, data, 4, ":", true) |
| 50 | = "00:" |
| 51 | osmo_hexdump_buf(buf, 7, data, 4, ":", true) |
| 52 | = "00:01:" |
| 53 | osmo_hexdump_buf(buf, 8, data, 4, ":", true) |
| 54 | = "00:01:" |
| 55 | osmo_hexdump_buf(buf, sizeof(buf), data, 4, "::", false) |
| 56 | = "00::01::02::03" |
| 57 | osmo_hexdump_buf(buf, sizeof(buf), data, 4, "::", true) |
| 58 | = "00::01::02::03::" |
| 59 | osmo_hexdump_buf(buf, 6, data, 4, "::", false) |
| 60 | = "00::" |
| 61 | osmo_hexdump_buf(buf, 7, data, 4, "::", false) |
| 62 | = "00::" |
| 63 | osmo_hexdump_buf(buf, 8, data, 4, "::", false) |
| 64 | = "00::" |
| 65 | osmo_hexdump_buf(buf, 6, data, 4, "::", true) |
| 66 | = "00::" |
| 67 | osmo_hexdump_buf(buf, 7, data, 4, "::", true) |
| 68 | = "00::" |
| 69 | osmo_hexdump_buf(buf, 8, data, 4, "::", true) |
| 70 | = "00::" |
| 71 | osmo_hexdump_buf(buf, sizeof(buf), data, 4, "", false) |
| 72 | = "00010203" |
| 73 | osmo_hexdump_buf(buf, sizeof(buf), data, 4, "", true) |
| 74 | = "00010203" |
| 75 | osmo_hexdump_buf(buf, 6, data, 4, "", false) |
| 76 | = "0001" |
| 77 | osmo_hexdump_buf(buf, 7, data, 4, "", false) |
| 78 | = "000102" |
| 79 | osmo_hexdump_buf(buf, 8, data, 4, "", false) |
| 80 | = "000102" |
| 81 | osmo_hexdump_buf(buf, 6, data, 4, "", true) |
| 82 | = "0001" |
| 83 | osmo_hexdump_buf(buf, 7, data, 4, "", true) |
| 84 | = "000102" |
| 85 | osmo_hexdump_buf(buf, 8, data, 4, "", true) |
| 86 | = "000102" |
| 87 | osmo_hexdump_buf(buf, sizeof(buf), data, 4, NULL, false) |
| 88 | = "00010203" |
| 89 | osmo_hexdump_buf(buf, sizeof(buf), data, 4, NULL, true) |
| 90 | = "00010203" |
| 91 | osmo_hexdump_buf(buf, 6, data, 4, NULL, false) |
| 92 | = "0001" |
| 93 | osmo_hexdump_buf(buf, 7, data, 4, NULL, false) |
| 94 | = "000102" |
| 95 | osmo_hexdump_buf(buf, 8, data, 4, NULL, false) |
| 96 | = "000102" |
| 97 | osmo_hexdump_buf(buf, 6, data, 4, NULL, true) |
| 98 | = "0001" |
| 99 | osmo_hexdump_buf(buf, 7, data, 4, NULL, true) |
| 100 | = "000102" |
| 101 | osmo_hexdump_buf(buf, 8, data, 4, NULL, true) |
| 102 | = "000102" |
Neels Hofmeyr | 7adb567 | 2017-02-14 15:48:19 +0100 | [diff] [blame] | 103 | |
| 104 | Hexparse 0..255 in lower case |
| 105 | rc = 256 |
| 106 | --> 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f 80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 ba bb bc bd be bf c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 da db dc dd de df e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ff |
| 107 | |
| 108 | Hexparse 0..255 in upper case |
| 109 | rc = 256 |
| 110 | --> 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f 80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 ba bb bc bd be bf c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 da db dc dd de df e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ff |
| 111 | |
| 112 | Hexparse 0..255 in mixed case |
| 113 | rc = 256 |
| 114 | --> 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f 80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 ba bb bc bd be bf c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 da db dc dd de df e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ff |
| 115 | |
Neels Hofmeyr | 437ed4a | 2017-02-14 15:54:31 +0100 | [diff] [blame] | 116 | Hexparse 0..255 with whitespace |
| 117 | rc = 256 |
| 118 | --> 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f 80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 ba bb bc bd be bf c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 da db dc dd de df e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ff |
| 119 | |
Neels Hofmeyr | 7adb567 | 2017-02-14 15:48:19 +0100 | [diff] [blame] | 120 | Hexparse with buffer too short |
| 121 | rc = -1 |
| 122 | Hexparse with uneven amount of digits |
| 123 | rc = -1 |
| 124 | Hexparse with invalid char |
| 125 | rc = -1 |
Neels Hofmeyr | 4335bad | 2017-10-07 04:39:14 +0200 | [diff] [blame] | 126 | |
Harald Welte | 7869baf | 2018-07-31 20:25:48 +0200 | [diff] [blame] | 127 | Testing IPA CCM ID GET parsing |
| 128 | |
| 129 | Testing IPA CCM ID RESP parsing |
| 130 | |
Neels Hofmeyr | 4335bad | 2017-10-07 04:39:14 +0200 | [diff] [blame] | 131 | ----- test_is_hexstr |
| 132 | 0: pass str='(null)' min=0 max=10 even=0 expect=valid |
| 133 | 1: pass str='(null)' min=1 max=10 even=0 expect=invalid |
| 134 | 2: pass str='' min=0 max=10 even=0 expect=valid |
| 135 | 3: pass str='' min=1 max=10 even=0 expect=invalid |
| 136 | 4: pass str=' ' min=0 max=10 even=0 expect=invalid |
| 137 | 5: pass str='1' min=0 max=10 even=0 expect=valid |
| 138 | 6: pass str='1' min=1 max=10 even=0 expect=valid |
| 139 | 7: pass str='1' min=1 max=10 even=1 expect=invalid |
| 140 | 8: pass str='1' min=2 max=10 even=0 expect=invalid |
| 141 | 9: pass str='123' min=1 max=10 even=0 expect=valid |
| 142 | 10: pass str='123' min=1 max=10 even=1 expect=invalid |
| 143 | 11: pass str='123' min=4 max=10 even=0 expect=invalid |
| 144 | 12: pass str='1234' min=4 max=10 even=1 expect=valid |
| 145 | 13: pass str='12345' min=4 max=10 even=1 expect=invalid |
| 146 | 14: pass str='123456' min=4 max=10 even=1 expect=valid |
| 147 | 15: pass str='1234567' min=4 max=10 even=1 expect=invalid |
| 148 | 16: pass str='12345678' min=4 max=10 even=1 expect=valid |
| 149 | 17: pass str='123456789' min=4 max=10 even=1 expect=invalid |
| 150 | 18: pass str='123456789a' min=4 max=10 even=1 expect=valid |
| 151 | 19: pass str='123456789ab' min=4 max=10 even=1 expect=invalid |
| 152 | 20: pass str='123456789abc' min=4 max=10 even=1 expect=invalid |
| 153 | 21: pass str='123456789ab' min=4 max=10 even=0 expect=invalid |
| 154 | 22: pass str='123456789abc' min=4 max=10 even=0 expect=invalid |
| 155 | 23: pass str='0123456789abcdefABCDEF' min=0 max=100 even=0 expect=valid |
| 156 | 24: pass str='0123456789 abcdef ABCDEF' min=0 max=100 even=0 expect=invalid |
| 157 | 25: pass str='foobar' min=0 max=100 even=0 expect=invalid |
| 158 | 26: pass str='BeadedBeeAced1EbbedDefacedFacade' min=32 max=32 even=1 expect=valid |
| 159 | 27: pass str='C01ffedC1cadaeAc1d1f1edAcac1aB0a' min=32 max=32 even=0 expect=valid |
| 160 | 28: pass str='DeafBeddedBabeAcceededFadedDecaff' min=32 max=32 even=0 expect=invalid |
Harald Welte | 504caac | 2017-10-27 17:19:59 +0200 | [diff] [blame] | 161 | |
| 162 | Testing BCD conversion |
| 163 | val=0x0, expected=0, found=0 |
| 164 | val=0x1, expected=1, found=1 |
| 165 | val=0x2, expected=2, found=2 |
| 166 | val=0x3, expected=3, found=3 |
| 167 | val=0x4, expected=4, found=4 |
| 168 | val=0x5, expected=5, found=5 |
| 169 | val=0x6, expected=6, found=6 |
| 170 | val=0x7, expected=7, found=7 |
| 171 | val=0x8, expected=8, found=8 |
| 172 | val=0x9, expected=9, found=9 |
| 173 | val=0xa, expected=A, found=A |
| 174 | val=0xb, expected=B, found=B |
| 175 | val=0xc, expected=C, found=C |
| 176 | val=0xd, expected=D, found=D |
| 177 | val=0xe, expected=E, found=E |
| 178 | val=0xf, expected=F, found=F |
Neels Hofmeyr | 9910bbc | 2017-12-16 00:54:52 +0100 | [diff] [blame] | 179 | |
Neels Hofmeyr | 7079e69 | 2018-12-05 21:02:36 +0100 | [diff] [blame] | 180 | Testing bcd to string conversion |
| 181 | - BCD-input='1a 32 54 76 98 f0' nibbles=[1..11[ str_size=64 |
| 182 | rc=10 |
| 183 | -> "1234567890" |
Neels Hofmeyr | 83025bf | 2020-05-26 02:45:23 +0200 | [diff] [blame] | 184 | osmo_str2bcd(start_nibble=1) -> rc=6 |
| 185 | = 1f 32 54 76 98 f0 |
Neels Hofmeyr | 7079e69 | 2018-12-05 21:02:36 +0100 | [diff] [blame] | 186 | - BCD-input='1a 32 a4 cb 9d f0' nibbles=[1..11[ str_size=64 |
| 187 | rc=-22 |
| 188 | -> "1234ABCD90" |
Neels Hofmeyr | 83025bf | 2020-05-26 02:45:23 +0200 | [diff] [blame] | 189 | osmo_str2bcd(start_nibble=1) -> rc=-22 |
Neels Hofmeyr | 7079e69 | 2018-12-05 21:02:36 +0100 | [diff] [blame] | 190 | - BCD-input='1a 32 a4 cb 9d f0' nibbles=[1..11[ str_size=64 |
| 191 | rc=10 |
| 192 | -> "1234ABCD90" |
Neels Hofmeyr | 83025bf | 2020-05-26 02:45:23 +0200 | [diff] [blame] | 193 | osmo_str2bcd(start_nibble=1) -> rc=6 |
| 194 | = 1f 32 a4 cb 9d f0 |
Neels Hofmeyr | 7079e69 | 2018-12-05 21:02:36 +0100 | [diff] [blame] | 195 | - BCD-input='1a 32 54 76 98 f0' nibbles=[1..12[ str_size=64 |
| 196 | rc=-22 |
| 197 | -> "1234567890F" |
Neels Hofmeyr | 83025bf | 2020-05-26 02:45:23 +0200 | [diff] [blame] | 198 | osmo_str2bcd(start_nibble=1) -> rc=-22 |
Neels Hofmeyr | 7079e69 | 2018-12-05 21:02:36 +0100 | [diff] [blame] | 199 | - BCD-input='1a 32 54 76 98 f0' nibbles=[1..12[ str_size=64 |
| 200 | rc=11 |
| 201 | -> "1234567890F" |
Neels Hofmeyr | 83025bf | 2020-05-26 02:45:23 +0200 | [diff] [blame] | 202 | osmo_str2bcd(start_nibble=1) -> rc=6 |
| 203 | = 1f 32 54 76 98 f0 |
Neels Hofmeyr | 7079e69 | 2018-12-05 21:02:36 +0100 | [diff] [blame] | 204 | - BCD-input='1a 32 54 76 98 f0' nibbles=[0..12[ str_size=64 |
| 205 | rc=12 |
| 206 | -> "A1234567890F" |
Neels Hofmeyr | 83025bf | 2020-05-26 02:45:23 +0200 | [diff] [blame] | 207 | osmo_str2bcd(start_nibble=0) -> rc=6 |
| 208 | = 1a 32 54 76 98 f0 |
Neels Hofmeyr | 7079e69 | 2018-12-05 21:02:36 +0100 | [diff] [blame] | 209 | - BCD-input='1a 32 54 76 98 f0' nibbles=[1..12[ str_size=5 |
| 210 | rc=11 |
| 211 | -> "1234" |
Neels Hofmeyr | 83025bf | 2020-05-26 02:45:23 +0200 | [diff] [blame] | 212 | osmo_str2bcd(start_nibble=1) -> rc=3 |
| 213 | = 1f 32 f4 |
Neels Hofmeyr | 7079e69 | 2018-12-05 21:02:36 +0100 | [diff] [blame] | 214 | - BCD-input='' nibbles=[1..1[ str_size=64 |
| 215 | rc=0 |
| 216 | -> "" |
Neels Hofmeyr | 83025bf | 2020-05-26 02:45:23 +0200 | [diff] [blame] | 217 | osmo_str2bcd(start_nibble=1) -> rc=1 |
| 218 | = ff |
Neels Hofmeyr | 7079e69 | 2018-12-05 21:02:36 +0100 | [diff] [blame] | 219 | - zero output buffer |
| 220 | bcd2str(NULL, ...) -> -12 |
| 221 | bcd2str(dst, 0, ...) -> -12 |
| 222 | |
Neels Hofmeyr | 8a7eed5 | 2019-11-21 00:12:10 +0100 | [diff] [blame] | 223 | Testing string escaping: osmo_escape_str() |
Neels Hofmeyr | 9910bbc | 2017-12-16 00:54:52 +0100 | [diff] [blame] | 224 | - all chars from 0 to 255 in batches of 16: |
| 225 | "\0\1\2\3\4\5\6\a\b\t\n\v\f\r\14\15" |
| 226 | "\16\17\18\19\20\21\22\23\24\25\26\27\28\29\30\31" |
| 227 | " !\"#$%&'()*+,-./" |
| 228 | "0123456789:;<=>?" |
| 229 | "@ABCDEFGHIJKLMNO" |
| 230 | "PQRSTUVWXYZ[\\]^_" |
| 231 | "`abcdefghijklmno" |
| 232 | "pqrstuvwxyz{|}~\127" |
| 233 | "\128\129\130\131\132\133\134\135\136\137\138\139\140\141\142\143" |
| 234 | "\144\145\146\147\148\149\150\151\152\153\154\155\156\157\158\159" |
| 235 | "\160\161\162\163\164\165\166\167\168\169\170\171\172\173\174\175" |
| 236 | "\176\177\178\179\180\181\182\183\184\185\186\187\188\189\190\191" |
| 237 | "\192\193\194\195\196\197\198\199\200\201\202\203\204\205\206\207" |
| 238 | "\208\209\210\211\212\213\214\215\216\217\218\219\220\221\222\223" |
| 239 | "\224\225\226\227\228\229\230\231\232\233\234\235\236\237\238\239" |
| 240 | "\240\241\242\243\244\245\246\247\248\249\250\251\252\253\254\255" |
| 241 | - nul terminated: |
| 242 | "termi\nated" |
| 243 | - passthru: |
| 244 | passed through unchanged "printable" |
| 245 | - zero length: |
| 246 | "" |
| 247 | - truncation when too long: |
| 248 | "\axxxxxxE" |
Neels Hofmeyr | 04eb56f | 2018-04-09 00:41:28 +0200 | [diff] [blame] | 249 | |
Neels Hofmeyr | 8a7eed5 | 2019-11-21 00:12:10 +0100 | [diff] [blame] | 250 | Testing string quoting: osmo_quote_str() |
Neels Hofmeyr | 04eb56f | 2018-04-09 00:41:28 +0200 | [diff] [blame] | 251 | - all chars from 0 to 255 in batches of 16: |
| 252 | '"\0\1\2\3\4\5\6\a\b\t\n\v\f\r\14\15"' |
| 253 | '"\16\17\18\19\20\21\22\23\24\25\26\27\28\29\30\31"' |
| 254 | '" !\"#$%&'()*+,-./"' |
| 255 | '"0123456789:;<=>?"' |
| 256 | '"@ABCDEFGHIJKLMNO"' |
| 257 | '"PQRSTUVWXYZ[\\]^_"' |
| 258 | '"`abcdefghijklmno"' |
| 259 | '"pqrstuvwxyz{|}~\127"' |
| 260 | '"\128\129\130\131\132\133\134\135\136\137\138\139\140\141\142\143"' |
| 261 | '"\144\145\146\147\148\149\150\151\152\153\154\155\156\157\158\159"' |
| 262 | '"\160\161\162\163\164\165\166\167\168\169\170\171\172\173\174\175"' |
| 263 | '"\176\177\178\179\180\181\182\183\184\185\186\187\188\189\190\191"' |
| 264 | '"\192\193\194\195\196\197\198\199\200\201\202\203\204\205\206\207"' |
| 265 | '"\208\209\210\211\212\213\214\215\216\217\218\219\220\221\222\223"' |
| 266 | '"\224\225\226\227\228\229\230\231\232\233\234\235\236\237\238\239"' |
| 267 | '"\240\241\242\243\244\245\246\247\248\249\250\251\252\253\254\255"' |
| 268 | - nul terminated: |
| 269 | '"termi\nated"' |
| 270 | - never passthru: |
| 271 | NOT passed through. '"printable"' |
| 272 | - zero length: |
| 273 | '""' |
| 274 | - truncation when too long: |
Neels Hofmeyr | ecef7ec | 2019-03-05 16:42:50 +0100 | [diff] [blame] | 275 | '"\axxxxxE' |
Neels Hofmeyr | 04eb56f | 2018-04-09 00:41:28 +0200 | [diff] [blame] | 276 | - always truncation, even when no escaping needed: |
Neels Hofmeyr | ecef7ec | 2019-03-05 16:42:50 +0100 | [diff] [blame] | 277 | '"xxxxxxxE' |
Neels Hofmeyr | 04eb56f | 2018-04-09 00:41:28 +0200 | [diff] [blame] | 278 | - try to feed too little buf for quoting: |
Neels Hofmeyr | ecef7ec | 2019-03-05 16:42:50 +0100 | [diff] [blame] | 279 | '"' |
Neels Hofmeyr | 04eb56f | 2018-04-09 00:41:28 +0200 | [diff] [blame] | 280 | - NULL string becomes a "NULL" literal: |
| 281 | 'NULL' |
Harald Welte | 15a5f8d | 2018-06-06 16:58:17 +0200 | [diff] [blame] | 282 | |
Neels Hofmeyr | 8a7eed5 | 2019-11-21 00:12:10 +0100 | [diff] [blame] | 283 | Testing string escaping: osmo_escape_cstr_buf() |
| 284 | - all chars from 0 to 255 in batches of 16: |
| 285 | "\0\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f" |
| 286 | "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f" |
| 287 | " !\"#$%&'()*+,-./" |
| 288 | "0123456789:;<=>?" |
| 289 | "@ABCDEFGHIJKLMNO" |
| 290 | "PQRSTUVWXYZ[\\]^_" |
| 291 | "`abcdefghijklmno" |
| 292 | "pqrstuvwxyz{|}~\x7f" |
| 293 | "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f" |
| 294 | "\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f" |
| 295 | "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf" |
| 296 | "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf" |
| 297 | "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf" |
| 298 | "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf" |
| 299 | "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef" |
| 300 | "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff" |
| 301 | - nul terminated: |
| 302 | "termi\nated" |
| 303 | - passthru: |
| 304 | passed through unchanged "printable" |
| 305 | - zero length: |
| 306 | "" |
| 307 | - truncation when too long: |
| 308 | "\x07xxxxx" |
| 309 | - Test escaping an escaped string: |
| 310 | 0: '\x02\x03\n' |
| 311 | 1: '\\x02\\x03\\n' |
| 312 | 2: '\\\\x02\\\\x03\\\\n' |
| 313 | 3: '\\\\\\\\x02\\\\\\\\x03\\\\\\\\n' |
| 314 | |
| 315 | Testing string quoting: osmo_quote_cstr_buf() |
| 316 | - all chars from 0 to 255 in batches of 16: |
| 317 | "\0\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f" |
| 318 | "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f" |
| 319 | " !\"#$%&'()*+,-./" |
| 320 | "0123456789:;<=>?" |
| 321 | "@ABCDEFGHIJKLMNO" |
| 322 | "PQRSTUVWXYZ[\\]^_" |
| 323 | "`abcdefghijklmno" |
| 324 | "pqrstuvwxyz{|}~\x7f" |
| 325 | "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f" |
| 326 | "\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f" |
| 327 | "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf" |
| 328 | "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf" |
| 329 | "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf" |
| 330 | "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf" |
| 331 | "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef" |
| 332 | "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff" |
| 333 | - nul terminated: |
| 334 | '"termi\nated"' |
| 335 | - never passthru: |
| 336 | NOT passed through. '"printable"' |
| 337 | - zero length: |
| 338 | '""' |
| 339 | - truncation when too long: |
| 340 | '"\x07xxxx' |
| 341 | - always truncation, even when no escaping needed: |
| 342 | '"xxxxxxxE' |
| 343 | - try to feed too little buf for quoting: |
| 344 | '"' |
| 345 | - Test quoting a quoted+escaped string: |
| 346 | 0: "\x02\x03\n" |
| 347 | 1: "\"\\x02\\x03\\n\"" |
| 348 | 2: "\"\\\"\\\\x02\\\\x03\\\\n\\\"\"" |
| 349 | 3: "\"\\\"\\\\\\\"\\\\\\\\x02\\\\\\\\x03\\\\\\\\n\\\\\\\"\\\"\"" |
| 350 | - Test C-string equivalence: |
| 351 | strcmp(OSMO_STRINGIFY_VAL(TEST_STR), osmo_quote_cstr_c(ctx, TEST_STR, 256)) == 0 |
| 352 | strcmp(OSMO_STRINGIFY_VAL(EMPTY_STR), osmo_quote_cstr_c(ctx, EMPTY_STR, -1)) == 0 |
| 353 | strcmp("NULL", osmo_quote_cstr_c(ctx, NULL, -1)) == 0 |
| 354 | |
Harald Welte | 15a5f8d | 2018-06-06 16:58:17 +0200 | [diff] [blame] | 355 | Testing integer square-root |
Neels Hofmeyr | 59f4caf | 2018-07-19 22:13:19 +0200 | [diff] [blame] | 356 | |
| 357 | osmo_sockaddr_to_str_and_uint_test |
| 358 | [0] 0.0.0.0:0 addr_len=20 --> 0.0.0.0:0 rc=7 |
| 359 | [1] 255.255.255.255:65535 addr_len=20 --> 255.255.255.255:65535 rc=15 |
| 360 | [2] 234.23.42.123:1234 addr_len=20 --> 234.23.42.123:1234 rc=13 |
| 361 | [3] 234.23.42.123:1234 addr_len=10 --> 234.23.42:1234 rc=13 |
| 362 | [4] 234.23.42.123:1234 (omit port) addr_len=20 --> 234.23.42.123:0 rc=13 |
| 363 | [5] 234.23.42.123:1234 (omit addr) addr_len=0 --> :1234 rc=0 |
| 364 | [6] 234.23.42.123:1234 addr_len=0 --> :1234 rc=13 |
| 365 | [7] 234.23.42.123:1234 (omit addr) (omit port) addr_len=0 --> :0 rc=0 |
Neels Hofmeyr | 7c74989 | 2018-09-07 03:01:38 +0200 | [diff] [blame] | 366 | |
| 367 | osmo_str_tolowupper_test |
| 368 | osmo_str_tolower("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()") |
| 369 | = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz!@#$%^&*()" |
| 370 | osmo_str_toupper("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()") |
| 371 | = "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()" |
| 372 | osmo_str_tolower_buf(99, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()") |
| 373 | = 62, "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz!@#$%^&*()" |
| 374 | osmo_str_tolower_buf(99, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()", in-place) |
| 375 | = 62, "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz!@#$%^&*()" |
| 376 | osmo_str_toupper_buf(99, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()") |
| 377 | = 62, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()" |
| 378 | osmo_str_toupper_buf(99, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()", in-place) |
| 379 | = 62, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()" |
| 380 | osmo_str_tolower_buf(0, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()") |
| 381 | = 62, "Unset" |
| 382 | osmo_str_tolower_buf(0, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()", in-place) |
| 383 | = 0, "Unset" |
| 384 | osmo_str_toupper_buf(0, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()") |
| 385 | = 62, "Unset" |
| 386 | osmo_str_toupper_buf(0, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()", in-place) |
| 387 | = 0, "Unset" |
| 388 | osmo_str_tolower_buf(1, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()") |
| 389 | = 62, "" |
| 390 | osmo_str_tolower_buf(1, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()", in-place) |
| 391 | = 0, "" |
| 392 | osmo_str_toupper_buf(1, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()") |
| 393 | = 62, "" |
| 394 | osmo_str_toupper_buf(1, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()", in-place) |
| 395 | = 0, "" |
| 396 | osmo_str_tolower_buf(2, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()") |
| 397 | = 62, "a" |
| 398 | osmo_str_tolower_buf(2, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()", in-place) |
| 399 | = 1, "a" |
| 400 | osmo_str_toupper_buf(2, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()") |
| 401 | = 62, "A" |
| 402 | osmo_str_toupper_buf(2, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()", in-place) |
| 403 | = 1, "A" |
| 404 | osmo_str_tolower_buf(28, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()") |
| 405 | = 62, "abcdefghijklmnopqrstuvwxyza" |
| 406 | osmo_str_tolower_buf(28, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()", in-place) |
| 407 | = 27, "abcdefghijklmnopqrstuvwxyza" |
| 408 | osmo_str_toupper_buf(28, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()") |
| 409 | = 62, "ABCDEFGHIJKLMNOPQRSTUVWXYZA" |
| 410 | osmo_str_toupper_buf(28, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()", in-place) |
| 411 | = 27, "ABCDEFGHIJKLMNOPQRSTUVWXYZA" |
Neels Hofmeyr | 2cbe25f | 2019-02-11 20:32:06 +0100 | [diff] [blame] | 412 | |
| 413 | strbuf_test |
| 414 | OSMO_STRBUF_APPEND(): |
| 415 | The answer is 42 |
| 416 | would have needed 423470 bytes |
| 417 | |
| 418 | OSMO_STRBUF_PRINTF(): |
| 419 | 1: (need 42 chars, had size=23) T minus 10 9 8 7 6 5 4 |
| 420 | 2: (need 42 chars, had size=42) T minus 10 9 8 7 6 5 4 3 2 1 ... Lift off |
| 421 | 3: (need 42 chars, had size=42+1) T minus 10 9 8 7 6 5 4 3 2 1 ... Lift off! |
| 422 | 4: (need 42 chars, had size=0) 0x2b 0x2b 0x2b... |
| 423 | 5: (need 42 chars, had NULL buffer) |
| 424 | |
| 425 | cascade: |
| 426 | (need 134 chars) |
| 427 | T minus 10 9 8 7 6 5 4 3 2 1 ... Lift off! -- T minus 10 9 8 7 6 5 4 3 2 1 ... Lift off! -- T minus 10 9 8 7 6 5 4 3 2 1 ... Lift off! |
| 428 | (need 134 chars, had size=63) T minus 10 9 8 7 6 5 4 3 2 1 ... Lift off! -- T minus 10 9 8 7 |
Neels Hofmeyr | d79ccc6 | 2019-03-07 23:08:40 +0100 | [diff] [blame] | 429 | |
Neels Hofmeyr | 8531d66 | 2019-04-11 07:16:02 +0200 | [diff] [blame] | 430 | strbuf_test_nolen |
| 431 | 20: 0001011100101010 (need=16) |
| 432 | more: 0001011100101010000 (need=19) |
| 433 | 10: 000101110 (need=9) |
| 434 | |
Neels Hofmeyr | d79ccc6 | 2019-03-07 23:08:40 +0100 | [diff] [blame] | 435 | startswith_test() |
| 436 | osmo_str_startswith(NULL, NULL) == true |
| 437 | osmo_str_startswith("", NULL) == true |
| 438 | osmo_str_startswith(NULL, "") == true |
| 439 | osmo_str_startswith("", "") == true |
| 440 | osmo_str_startswith("abc", NULL) == true |
| 441 | osmo_str_startswith("abc", "") == true |
| 442 | osmo_str_startswith(NULL, "abc") == false |
| 443 | osmo_str_startswith("", "abc") == false |
| 444 | osmo_str_startswith("abc", "a") == true |
| 445 | osmo_str_startswith("abc", "ab") == true |
| 446 | osmo_str_startswith("abc", "abc") == true |
| 447 | osmo_str_startswith("abc", "abcd") == false |
| 448 | osmo_str_startswith("abc", "xyz") == false |
Neels Hofmeyr | 823073a | 2019-10-28 04:58:04 +0100 | [diff] [blame] | 449 | |
| 450 | name_c_impl_test |
| 451 | 0: "test" |
| 452 | OSMO_NAME_C_IMPL(10, "ERROR") -> "test" allocated 1 10 bytes, name 'foo_name_c' |
| 453 | OSMO_NAME_C_IMPL(10, NULL) -> "test" allocated 1 10 bytes, name 'foo_name_c_null' |
| 454 | OSMO_NAME_C_IMPL(0, "ERROR") -> "test" allocated 1 5 bytes, name 'foo_name_c_zero' |
| 455 | OSMO_NAME_C_IMPL(0, NULL) -> "test" allocated 1 5 bytes, name 'foo_name_c_zero_null' |
| 456 | 1: "longer than 10 chars" |
| 457 | OSMO_NAME_C_IMPL(10, "ERROR") -> "longer than 10 chars" allocated 1 21 bytes, name 'foo_name_c' |
| 458 | OSMO_NAME_C_IMPL(10, NULL) -> "longer than 10 chars" allocated 1 21 bytes, name 'foo_name_c_null' |
| 459 | OSMO_NAME_C_IMPL(0, "ERROR") -> "longer than 10 chars" allocated 1 21 bytes, name 'foo_name_c_zero' |
| 460 | OSMO_NAME_C_IMPL(0, NULL) -> "longer than 10 chars" allocated 1 21 bytes, name 'foo_name_c_zero_null' |
| 461 | 2: NULL |
| 462 | OSMO_NAME_C_IMPL(10, "ERROR") -> "ERROR" allocated 1 6 bytes, name 'foo_name_c' |
| 463 | OSMO_NAME_C_IMPL(10, NULL) -> NULL allocated 0 |
| 464 | OSMO_NAME_C_IMPL(0, "ERROR") -> "ERROR" allocated 1 6 bytes, name 'foo_name_c_zero' |
| 465 | OSMO_NAME_C_IMPL(0, NULL) -> NULL allocated 0 |
Neels Hofmeyr | ff65d24 | 2019-11-19 00:21:14 +0100 | [diff] [blame] | 466 | |
| 467 | osmo_print_n_test() |
| 468 | "foo=bar" token_len=3 buf_size=100 -> token="foo" rc=3 |
| 469 | "foo" token_len=10 buf_size=100 -> token="foo" rc=3 |
| 470 | "foo" token_len=3 buf_size=100 -> token="foo" rc=3 |
| 471 | NULL token_len=10 buf_size=100 -> token="" rc=0 |
| 472 | "" token_len=10 buf_size=100 -> token="" rc=0 |
| 473 | "foo=bar" token_len=0 buf_size=100 -> token="" rc=0 |
| 474 | "foo=bar" token_len=3 buf_size=2 -> token="f" rc=3 |
| 475 | "foo" token_len=10 buf_size=2 -> token="f" rc=3 |
| 476 | "foo" token_len=3 buf_size=2 -> token="f" rc=3 |
| 477 | NULL token_len=10 buf_size=2 -> token="" rc=0 |
| 478 | "" token_len=10 buf_size=2 -> token="" rc=0 |
| 479 | "foo=bar" token_len=0 buf_size=2 -> token="" rc=0 |
| 480 | "foo=bar" token_len=3 buf_size=1 -> token="" rc=3 |
| 481 | "foo" token_len=10 buf_size=1 -> token="" rc=3 |
| 482 | "foo" token_len=3 buf_size=1 -> token="" rc=3 |
| 483 | NULL token_len=10 buf_size=1 -> token="" rc=0 |
| 484 | "" token_len=10 buf_size=1 -> token="" rc=0 |
| 485 | "foo=bar" token_len=0 buf_size=1 -> token="" rc=0 |
| 486 | "foo=bar" token_len=3 buf_size=0 -> token="unchanged" rc=3 |
| 487 | "foo" token_len=10 buf_size=0 -> token="unchanged" rc=3 |
| 488 | "foo" token_len=3 buf_size=0 -> token="unchanged" rc=3 |
| 489 | NULL token_len=10 buf_size=0 -> token="unchanged" rc=0 |
| 490 | "" token_len=10 buf_size=0 -> token="unchanged" rc=0 |
| 491 | "foo=bar" token_len=0 buf_size=0 -> token="unchanged" rc=0 |
Neels Hofmeyr | 06356fd | 2019-11-19 01:38:10 +0100 | [diff] [blame] | 492 | |
| 493 | osmo_strnchr_test() |
| 494 | osmo_strnchr("foo=bar", 8, '=') -> 3 |
| 495 | osmo_strnchr("foo=bar", 4, '=') -> 3 |
| 496 | osmo_strnchr("foo=bar", 3, '=') -> -1 |
| 497 | osmo_strnchr("foo=bar", 0, '=') -> -1 |
| 498 | osmo_strnchr("foo", 9, '=') -> -1 |
| 499 | osmo_strnchr("foo", 9, '\0') -> 3 |