|
1 | 1 | using HeboTech.ATLib.CodingSchemes; |
| 2 | +using System; |
2 | 3 | using Xunit; |
3 | 4 |
|
4 | 5 | namespace HeboTech.ATLib.Tests.PDU |
5 | 6 | { |
6 | 7 | public class Gsm7Tests |
7 | 8 | { |
| 9 | + [Theory] |
| 10 | + [InlineData("41", "41")] |
| 11 | + [InlineData("4142", "4121")] |
| 12 | + [InlineData("54616461203A29", "D430390CD2A500")] |
| 13 | + [InlineData("54686520717569636b2062726f776e20666f78206a756d7073206f76657220746865206c617a7920646f67", "54741914AFA7C76B9058FEBEBB41E6371EA4AEB7E173D0DB5E9683E8E832881DD6E741E4F719")] |
| 14 | + public void Pack_returns_packed_bytes(string gsm7Bit, string expected) |
| 15 | + { |
| 16 | + byte[] result = Gsm7.Pack(Convert.FromHexString(gsm7Bit)); |
| 17 | + |
| 18 | + Assert.Equal(Convert.FromHexString(expected), result); |
| 19 | + } |
| 20 | + |
| 21 | + [Theory] |
| 22 | + [InlineData("41" , "41")] |
| 23 | + [InlineData("4121", "4142")] |
| 24 | + [InlineData("D430390CD2A500", "54616461203A29")] |
| 25 | + [InlineData("54741914AFA7C76B9058FEBEBB41E6371EA4AEB7E173D0DB5E9683E8E832881DD6E741E4F719", "54686520717569636b2062726f776e20666f78206a756d7073206f76657220746865206c617a7920646f67")] |
| 26 | + public void Unpack_returns_unpacked_bytes(string gsm7Bit, string expected) |
| 27 | + { |
| 28 | + byte[] result = Gsm7.Unpack(Convert.FromHexString(gsm7Bit)); |
| 29 | + |
| 30 | + Assert.Equal(Convert.FromHexString(expected), result); |
| 31 | + } |
| 32 | + |
| 33 | + [Theory] |
| 34 | + [InlineData("A", "41")] |
| 35 | + [InlineData("AB", "4142")] |
| 36 | + [InlineData("The quick brown fox jumps over the lazy dog", "54686520717569636b2062726f776e20666f78206a756d7073206f76657220746865206c617a7920646f67")] |
| 37 | + [InlineData("Tada :)", "54616461203A29")] |
| 38 | + public void EncodeToBytes_returns_encoded_bytes(string gsm7Bit, string expected) |
| 39 | + { |
| 40 | + byte[] result = Gsm7.EncodeToBytes(gsm7Bit.ToCharArray()); |
| 41 | + |
| 42 | + Assert.Equal(Convert.FromHexString(expected), result); |
| 43 | + } |
| 44 | + |
| 45 | + [Theory] |
| 46 | + [InlineData("41", "A")] |
| 47 | + [InlineData("4142", "AB")] |
| 48 | + [InlineData("54686520717569636b2062726f776e20666f78206a756d7073206f76657220746865206c617a7920646f67", "The quick brown fox jumps over the lazy dog")] |
| 49 | + [InlineData("54616461203A29", "Tada :)")] |
| 50 | + public void DecodeFromBytes_returns_decoded_text(string gsm7Bit, string expected) |
| 51 | + { |
| 52 | + string result = Gsm7.DecodeFromBytes(Convert.FromHexString(gsm7Bit)); |
| 53 | + |
| 54 | + Assert.Equal(expected, result); |
| 55 | + } |
| 56 | + |
8 | 57 | [Theory] |
9 | 58 | [InlineData("A", "41")] |
10 | 59 | [InlineData("AB", "4121")] |
11 | 60 | [InlineData("ABC", "41E110")] |
12 | 61 | [InlineData("Google", "C7F7FBCC2E03")] |
13 | 62 | [InlineData("SMS Rulz", "D3E61424ADB3F5")] |
14 | 63 | [InlineData("Hello.", "C8329BFD7601")] |
| 64 | + [InlineData("Hello world", "C8329BFD06DDDF723619")] |
15 | 65 | [InlineData("This is testdata!", "54747A0E4ACF41F4F29C4E0ED3C321")] |
16 | 66 | [InlineData("The quick brown fox jumps over the lazy dog", "54741914AFA7C76B9058FEBEBB41E6371EA4AEB7E173D0DB5E9683E8E832881DD6E741E4F719")] |
17 | 67 | [InlineData("Tada :)", "D430390CD2A500")] |
18 | | - public void Encoder_returns_encoded_text(string gsm7Bit, string expected) |
| 68 | + [InlineData("hellohello", "E8329BFD4697D9EC37")] |
| 69 | + [InlineData("Hi", "C834")] |
| 70 | + public void Encode_and_pack_returns_encoded_text(string gsm7Bit, string expected) |
| 71 | + { |
| 72 | + byte[] result = Gsm7.Pack(Gsm7.EncodeToBytes(gsm7Bit)); |
| 73 | + |
| 74 | + Assert.Equal(Convert.FromHexString(expected), result); |
| 75 | + } |
| 76 | + |
| 77 | + [Theory] |
| 78 | + [InlineData("41", 0, "A")] |
| 79 | + [InlineData("4121", 0, "AB")] |
| 80 | + [InlineData("C834", 0, "Hi")] |
| 81 | + [InlineData("41E110", 0, "ABC")] |
| 82 | + [InlineData("C7F7FBCC2E03", 0, "Google")] |
| 83 | + [InlineData("D430390CD2A500", 0, "Tada :)")] |
| 84 | + [InlineData("D3E61424ADB3F5", 0, "SMS Rulz")] |
| 85 | + [InlineData("C8329BFD7601", 0, "Hello.")] |
| 86 | + [InlineData("C8329BFD06DDDF723619", 0, "Hello world")] |
| 87 | + [InlineData("54747A0E4ACF41F4F29C4E0ED3C321", 0, "This is testdata!")] |
| 88 | + [InlineData("54741914AFA7C76B9058FEBEBB41E6371EA4AEB7E173D0DB5E9683E8E832881DD6E741E4F719", 0, "The quick brown fox jumps over the lazy dog")] |
| 89 | + [InlineData( |
| 90 | + "986F79B90D4AC3E7F53688FC66BFE5A0799A0E0AB7CB741668FC76CFCB637A995E9783C2E4343C3D1FA7DD6750999DA6B340F33219447E83CAE9FABCFD2683E8E536FC2D07A5DDE334394DAEBBE9A03A1DC40E8BDFF232A84C0791DFECB7BC0C6A87CFEE3028CC4EC7EB6117A84A0795DDE936284C06B5D3EE741B642FBBD3E1360B14AFA7E7", 1, |
| 91 | + "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis")] |
| 92 | + public void Unpack_and_decode_returns_decoded_text(string gsm7Bit, int paddingBits, string expected) |
19 | 93 | { |
20 | | - string result = Gsm7.Encode(gsm7Bit); |
| 94 | + byte[] unpacked = Gsm7.Unpack(Convert.FromHexString(gsm7Bit), paddingBits); |
| 95 | + string result = Gsm7.DecodeFromBytes(unpacked); |
21 | 96 |
|
22 | 97 | Assert.Equal(expected, result); |
23 | 98 | } |
24 | 99 |
|
25 | 100 | [Theory] |
26 | | - [InlineData("41", "A")] |
27 | | - [InlineData("4121", "AB")] |
28 | | - [InlineData("41E110", "ABC")] |
29 | | - [InlineData("C7F7FBCC2E03", "Google")] |
30 | | - [InlineData("D3E61424ADB3F5", "SMS Rulz")] |
31 | | - [InlineData("C8329BFD7601", "Hello.")] |
32 | | - [InlineData("54747A0E4ACF41F4F29C4E0ED3C321", "This is testdata!")] |
33 | | - [InlineData("54741914AFA7C76B9058FEBEBB41E6371EA4AEB7E173D0DB5E9683E8E832881DD6E741E4F719", "The quick brown fox jumps over the lazy dog")] |
34 | | - public void Decoder_returns_decoded_text(string gsm7Bit, string expected) |
| 101 | + [InlineData("{", "1B28")] |
| 102 | + [InlineData("{}", "1B281B29")] |
| 103 | + [InlineData("()", "2829")] |
| 104 | + public void EncodeToBytes_returns_encoded_bytes_with_default_extension_table(string gsm7Bit, string expected) |
| 105 | + { |
| 106 | + byte[] result = Gsm7.EncodeToBytes(gsm7Bit); |
| 107 | + |
| 108 | + Assert.Equal(Convert.FromHexString(expected), result); |
| 109 | + } |
| 110 | + |
| 111 | + [Theory] |
| 112 | + [InlineData("À", Gsm7.Extension.Portugese, Gsm7.Extension.Portugese, "14")] |
| 113 | + [InlineData("Φ", Gsm7.Extension.Portugese, Gsm7.Extension.Portugese, "1B12")] |
| 114 | + [InlineData("ΦΣ", Gsm7.Extension.Portugese, Gsm7.Extension.Portugese, "1B121B18")] |
| 115 | + public void EncodeToBytes_returns_encoded_bytes_with_extension_table(string gsm7Bit, Gsm7.Extension singleShift, Gsm7.Extension lockingShift, string expected) |
| 116 | + { |
| 117 | + byte[] result = Gsm7.EncodeToBytes(gsm7Bit, singleShift, lockingShift); |
| 118 | + |
| 119 | + Assert.Equal(Convert.FromHexString(expected), result); |
| 120 | + } |
| 121 | + |
| 122 | + [Theory] |
| 123 | + [InlineData(new byte[] { 0x1B }, " ")] |
| 124 | + [InlineData(new byte[] { 0x1B, 0x28 }, "{")] |
| 125 | + [InlineData(new byte[] { 0x1B, 0x28, 0x1B, 0x29 }, "{}")] |
| 126 | + [InlineData(new byte[] { 0x28, 0x29 }, "()")] |
| 127 | + public void DecodeFromBytes_returns_decoded_text_with_default_extension_table(byte[] gsm7Bit, string expected) |
35 | 128 | { |
36 | | - string result = Gsm7.Decode(gsm7Bit); |
| 129 | + string result = Gsm7.DecodeFromBytes(gsm7Bit); |
37 | 130 |
|
38 | 131 | Assert.Equal(expected, result); |
39 | 132 | } |
| 133 | + |
| 134 | + [Theory] |
| 135 | + [InlineData("14", Gsm7.Extension.Portugese, Gsm7.Extension.Portugese, "À")] |
| 136 | + [InlineData("1B", Gsm7.Extension.Portugese, Gsm7.Extension.Portugese, " ")] |
| 137 | + [InlineData("1B12", Gsm7.Extension.Portugese, Gsm7.Extension.Portugese, "Φ")] |
| 138 | + public void DecodeFromBytes_returns_decoded_text_with_extension_table(string gsm7Bit, Gsm7.Extension singleShift, Gsm7.Extension lockingShift, string expected) |
| 139 | + { |
| 140 | + string result = Gsm7.DecodeFromBytes(Convert.FromHexString(gsm7Bit), singleShift, lockingShift); |
| 141 | + |
| 142 | + Assert.Equal(expected, result); |
| 143 | + } |
| 144 | + |
| 145 | + [Theory] |
| 146 | + [InlineData("A", 0, "41")] |
| 147 | + [InlineData("Hello world", 0, "C8329BFD06DDDF723619")] |
| 148 | + [InlineData("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostru", 0, "CCB7BCDC06A5E1F37A1B447EB3DF72D03C4D0785DB653A0B347EBBE7E531BD4CAFCB4161721A9E9E8FD3EE33A8CC4ED359A079990C22BF41E5747DDE7E9341F4721BFE9683D2EE719A9C26D7DD74509D0E6287C56F791954A683C86FF65B5E06B5C36777181466A7E3F5B00B54A583CAEE741B142683DA6977BA0DB297DDE9709B058AD7D37390FB3DA7CBEB")] |
| 149 | + [InlineData("Hello world", 1, "906536FB0DBABFE56C3200")] |
| 150 | + [InlineData("Hi", 2, "20D300")] |
| 151 | + [InlineData("Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.Ut enim ad minim veniam, quis", 1, "986F79B90D4AC3E7F53688FC66BFE5A0799A0E0AB7CB741668FC76CFCB637A995E9783C2E4343C3D4F8FD3EE33A8CC4ED359A079990C22BF41E5747DDE7E9341F4721BFE9683D2EE719A9C26D7DD74509D0E6287C56F791954A683C86FF65B5E06B5C36777181466A7E3F5B0AB4A0795DDE936284C06B5D3EE741B642FBBD3E1360B14AFA7E700")] |
| 152 | + [InlineData(" nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolor", 1, "40EEF79C2EAF9341657C593E4ED3C3F4F4DB0DAAB3D9E1F6F80D6287C56F797A0E72A7E769509D0E0AB3D3F17A1A0E2AE341E53068FC6EB7DFE43768FC76CFCBF17A98EE22D6D37350B84E2F83D2F2BABC0C22BFD96F3928ED06C9CB7079195D7693CBF2341D947683EC6F761D4E0FD3CB207B999DA683CAF37919344EB3D9F53688FC66BFE500")] |
| 153 | + [InlineData("e eu fugiat nulla pariatur.Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", 1, "CAA0721D64AE9FD3613AC85D67B3C32078589E0ED3EB7257113F2EC3E9E5BA1C344FBBE9A0F7781C2E8FC374D0B80E4F93C3F4301DE47EBB4170F93B4D2EBBE92CD0BCEEA683D26ED0B8CE868741F17A1AF4369BD3E37418442ECFCBF2BA9B0E6ABFD9EC341D1476A7DBA03419549ED341ECB0F82DAFB75D00")] |
| 154 | + public void Encoder_returns_encoded_text_with_padding(string gsm7Bit, int paddingBits, string expected) |
| 155 | + { |
| 156 | + byte[] result = Gsm7.Pack(Gsm7.EncodeToBytes(gsm7Bit), paddingBits); |
| 157 | + |
| 158 | + Assert.Equal(expected, BitConverter.ToString(result).Replace("-", "")); |
| 159 | + } |
| 160 | + |
| 161 | + [Theory] |
| 162 | + [InlineData("A")] |
| 163 | + [InlineData("AB")] |
| 164 | + [InlineData("ABC")] |
| 165 | + [InlineData("Google")] |
| 166 | + [InlineData("SMS Rulz")] |
| 167 | + [InlineData("Hello.")] |
| 168 | + [InlineData("Hello world")] |
| 169 | + [InlineData("This is testdata!")] |
| 170 | + [InlineData("The quick brown fox jumps over the lazy dog")] |
| 171 | + [InlineData("Tada :)")] |
| 172 | + [InlineData("hellohello")] |
| 173 | + [InlineData("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud")] |
| 174 | + public void Encode_decode_returns_original_text(string text) |
| 175 | + { |
| 176 | + byte[] encoded = Gsm7.EncodeToBytes(text); |
| 177 | + byte[] packed = Gsm7.Pack(encoded); |
| 178 | + byte[] decoded = Gsm7.Unpack(packed); |
| 179 | + string result = Gsm7.DecodeFromBytes(decoded); |
| 180 | + |
| 181 | + Assert.Equal(text, result); |
| 182 | + } |
40 | 183 | } |
41 | 184 | } |
0 commit comments