+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+func TestTbcdEven(t *testing.T) {
+
+ bcd := NewTbcd("0123456789??????")
+ bcdbuf := bcd.Encode("123456")
+ if len(bcdbuf) == 0 {
+ t.Errorf("TestTbcdEven: bcd Encode failed")
+ }
+
+ if bcdbuf[0] != 0x21 {
+ t.Errorf("TestBcdEven: bcdbuf[0] expected 0x21 got 0x%x", bcdbuf[0])
+ }
+
+ if bcdbuf[1] != 0x43 {
+ t.Errorf("TestBcdEven: bcdbuf[1] expected 0x34 got 0x%x", bcdbuf[1])
+ }
+
+ if bcdbuf[2] != 0x65 {
+ t.Errorf("TestBcdEven: bcdbuf[2] expected 0x65 got 0x%x", bcdbuf[2])
+ }
+
+ hexdata := make([]byte, hex.EncodedLen(len(bcdbuf)))
+ hex.Encode(hexdata, bcdbuf)
+ fmt.Printf("TestTbcdEven: 123456 encoded data [%s]\n", string(hexdata))
+
+ bcdstr := bcd.Decode(bcdbuf)
+ if bcdstr != string("123456") {
+ t.Errorf("TestTbcdEven: bcd Decode failed: got %s expect %s", bcdstr, string("123456"))
+ }
+
+}
+
+func TestTbcdUnEven1(t *testing.T) {
+
+ bcd := NewTbcd("0123456789??????")
+ bcdbuf := bcd.Encode("12345")
+ if len(bcdbuf) == 0 {
+ t.Errorf("TestTbcdUnEven1: bcd Encode failed")
+ }
+
+ if bcdbuf[0] != 0x21 {
+ t.Errorf("TestBcdEven: bcdbuf[0] expected 0x21 got 0x%x", bcdbuf[0])
+ }
+
+ if bcdbuf[1] != 0x43 {
+ t.Errorf("TestBcdEven: bcdbuf[1] expected 0x43 got 0x%x", bcdbuf[1])
+ }
+
+ if bcdbuf[2] != 0xf5 {
+ t.Errorf("TestBcdEven: bcdbuf[2] expected 0xf5 got 0x%x", bcdbuf[2])
+ }
+
+ hexdata := make([]byte, hex.EncodedLen(len(bcdbuf)))
+ hex.Encode(hexdata, bcdbuf)
+ fmt.Printf("TestTbcdUnEven1: 12345 encoded data [%s]\n", string(hexdata))
+
+ bcdstr := bcd.Decode(bcdbuf)
+ if bcdstr != string("12345?") {
+ t.Errorf("TestTbcdUnEven1: bcd Decode failed: got %s expect %s", bcdstr, string("12345?"))
+ }
+}
+
+func TestTbcdUnEven2(t *testing.T) {
+
+ bcd := NewTbcd("0123456789?????f")
+ bcdbuf := bcd.Encode("12345f")
+ if len(bcdbuf) == 0 {
+ t.Errorf("TestTbcdUnEven2: bcd Encode failed")
+ }
+
+ if bcdbuf[0] != 0x21 {
+ t.Errorf("TestBcdEven: bcdbuf[0] expected 0x21 got 0x%x", bcdbuf[0])
+ }
+
+ if bcdbuf[1] != 0x43 {
+ t.Errorf("TestBcdEven: bcdbuf[1] expected 0x43 got 0x%x", bcdbuf[1])
+ }
+
+ if bcdbuf[2] != 0xf5 {
+ t.Errorf("TestBcdEven: bcdbuf[2] expected 0xf5 got 0x%x", bcdbuf[2])
+ }
+
+ hexdata := make([]byte, hex.EncodedLen(len(bcdbuf)))
+ hex.Encode(hexdata, bcdbuf)
+ fmt.Printf("TestTbcdUnEven2: 12345f encoded data [%s]\n", string(hexdata))
+
+ bcdstr := bcd.Decode(bcdbuf)
+ if bcdstr != string("12345f") {
+ t.Errorf("TestTbcdUnEven2: bcd Decode failed: got %s expect %s", bcdstr, string("12345f"))
+ }
+}