|
| 1 | +package net.wiringbits.spra.admin |
| 2 | + |
| 3 | +import net.wiringbits.spra.ui.web.utils.ParseHexString |
| 4 | +import org.scalatest.matchers.must.Matchers.{be, must} |
| 5 | +import org.scalatest.wordspec.AnyWordSpec |
| 6 | +import scala.util.Try |
| 7 | + |
| 8 | +class ParseHexStringSpec extends AnyWordSpec { |
| 9 | + |
| 10 | + "convert valids hex string to a byte array" should { |
| 11 | + val hexData = List( |
| 12 | + "\\x5F3A9C1B7D", |
| 13 | + "\\x9E2D5B8F2A", |
| 14 | + "\\xA3B7D2E6C4", |
| 15 | + "\\x4F1E9A6D3B", |
| 16 | + "\\x6C2A8F4B7E", |
| 17 | + "\\xA3B9F56E8D4C721F9A6D3F2C", |
| 18 | + "\\x5F2C8E7B9A1D4E6F3B7A4F2D", |
| 19 | + "\\x7E9B6C2A5F8D4B3C6A2E1F9D", |
| 20 | + "\\xD4A7C8F25B3E7A9F4C8D6E1B", |
| 21 | + "\\xF3A59B4C7D2E8F1A6B9D3C4F2A7E1D5C9A3B6E8D4F2C1A7B3D9E4F1C6A2B" |
| 22 | + ) |
| 23 | + |
| 24 | + val conversionBytea: List[Array[Byte]] = List( |
| 25 | + Array(0x5f, 0x3a, 0x9c, 0x1b, 0x7d), |
| 26 | + Array(0x9e, 0x2d, 0x5b, 0x8f, 0x2a), |
| 27 | + Array(0xa3, 0xb7, 0xd2, 0xe6, 0xc4), |
| 28 | + Array(0x4f, 0x1e, 0x9a, 0x6d, 0x3b), |
| 29 | + Array(0x6c, 0x2a, 0x8f, 0x4b, 0x7e), |
| 30 | + Array(0xa3, 0xb9, 0xf5, 0x6e, 0x8d, 0x4c, 0x72, 0x1f, 0x9a, 0x6d, 0x3f, 0x2c), |
| 31 | + Array(0x5f, 0x2c, 0x8e, 0x7b, 0x9a, 0x1d, 0x4e, 0x6f, 0x3b, 0x7a, 0x4f, 0x2d), |
| 32 | + Array(0x7e, 0x9b, 0x6c, 0x2a, 0x5f, 0x8d, 0x4b, 0x3c, 0x6a, 0x2e, 0x1f, 0x9d), |
| 33 | + Array(0xd4, 0xa7, 0xc8, 0xf2, 0x5b, 0x3e, 0x7a, 0x9f, 0x4c, 0x8d, 0x6e, 0x1b), |
| 34 | + Array(0xf3, 0xa5, 0x9b, 0x4c, 0x7d, 0x2e, 0x8f, 0x1a, 0x6b, 0x9d, 0x3c, 0x4f, 0x2a, 0x7e, 0x1d, 0x5c, 0x9a, 0x3b, |
| 35 | + 0x6e, 0x8d, 0x4f, 0x2c, 0x1a, 0x7b, 0x3d, 0x9e, 0x4f, 0x1c, 0x6a, 0x2b) |
| 36 | + ).map(_.map(_.toByte)) |
| 37 | + |
| 38 | + hexData.zip(conversionBytea).foreach { case (hex, expectedBytes) => |
| 39 | + s"convert valid data $hex" in { |
| 40 | + ParseHexString.toByteArray(hex) must be(expectedBytes) |
| 41 | + } |
| 42 | + } |
| 43 | + } |
| 44 | + |
| 45 | + "throw an exception for a string containing non-hexadecimal characters" should { |
| 46 | + val hexData = List( |
| 47 | + "\\a5F3A9C1B7D", |
| 48 | + "9E2D5B8F2A", |
| 49 | + "\\xG3B7D2E6C4", |
| 50 | + "\\x4F1E9A76D3B", |
| 51 | + "6C42A8F4G7E", |
| 52 | + "\\xA3B9F56E8P4C721F9A6D3F2C", |
| 53 | + "\\x5F2C8E7B9AA1D4E6F3B7A4F2D", |
| 54 | + "\\x7E96C2A5F8D4B3C6A2E1F9D", |
| 55 | + "\\xD4A7C8F25B3E7JLAKSNSLKAS", |
| 56 | + "\\T1542ABF3A59B4C7D2E8F1A6B9D3C4F2A7E1D5C9A3B6E8D4F2C1A7B3D9E4F1C6A2B" |
| 57 | + ) |
| 58 | + |
| 59 | + hexData.foreach { value => |
| 60 | + s"throw an exeption for: $value" in { |
| 61 | + Try(ParseHexString.toByteArray(value)).isFailure must be(true) |
| 62 | + } |
| 63 | + } |
| 64 | + } |
| 65 | +} |
0 commit comments