plmn id handling improved

Change-Id: I20f0d6c347756a1f567c97b084d38240bc3a53bc
Signed-off-by: Juha Hyttinen <juha.hyttinen@nokia.com>
diff --git a/e2ap/pkg/conv/bcd_test.go b/e2ap/pkg/conv/bcd_test.go
index 4560dc7..fa2c61b 100644
--- a/e2ap/pkg/conv/bcd_test.go
+++ b/e2ap/pkg/conv/bcd_test.go
@@ -20,16 +20,24 @@
 package conv
 
 import (
+	"encoding/hex"
+	"fmt"
 	"os"
 	"testing"
 )
 
-// Test cases
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
 func TestMain(m *testing.M) {
 	code := m.Run()
 	os.Exit(code)
 }
 
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+
 func TestBcdEven(t *testing.T) {
 
 	bcd := NewBcd("0123456789??????")
@@ -38,6 +46,22 @@
 		t.Errorf("TestBcdEven: bcd Encode failed")
 	}
 
+	if bcdbuf[0] != 0x12 {
+		t.Errorf("TestBcdEven: bcdbuf[0] expected 0x12 got 0x%x", bcdbuf[0])
+	}
+
+	if bcdbuf[1] != 0x34 {
+		t.Errorf("TestBcdEven: bcdbuf[1] expected 0x34 got 0x%x", bcdbuf[1])
+	}
+
+	if bcdbuf[2] != 0x56 {
+		t.Errorf("TestBcdEven: bcdbuf[2] expected 0x56 got 0x%x", bcdbuf[2])
+	}
+
+	hexdata := make([]byte, hex.EncodedLen(len(bcdbuf)))
+	hex.Encode(hexdata, bcdbuf)
+	fmt.Printf("TestBcdEven: 123456 encoded data [%s]\n", string(hexdata))
+
 	bcdstr := bcd.Decode(bcdbuf)
 	if bcdstr != string("123456") {
 		t.Errorf("TestBcdEven: bcd Decode failed: got %s expect %s", bcdstr, string("123456"))
@@ -53,6 +77,22 @@
 		t.Errorf("TestBcdUnEven1: bcd Encode failed")
 	}
 
+	if bcdbuf[0] != 0x12 {
+		t.Errorf("TestBcdEven: bcdbuf[0] expected 0x12 got 0x%x", bcdbuf[0])
+	}
+
+	if bcdbuf[1] != 0x34 {
+		t.Errorf("TestBcdEven: bcdbuf[1] expected 0x34 got 0x%x", bcdbuf[1])
+	}
+
+	if bcdbuf[2] != 0x5f {
+		t.Errorf("TestBcdEven: bcdbuf[2] expected 0x5f got 0x%x", bcdbuf[2])
+	}
+
+	hexdata := make([]byte, hex.EncodedLen(len(bcdbuf)))
+	hex.Encode(hexdata, bcdbuf)
+	fmt.Printf("TestBcdUnEven1: 12345 encoded data [%s]\n", string(hexdata))
+
 	bcdstr := bcd.Decode(bcdbuf)
 	if bcdstr != string("12345?") {
 		t.Errorf("TestBcdUnEven1: bcd Decode failed: got %s expect %s", bcdstr, string("12345?"))
@@ -67,8 +107,118 @@
 		t.Errorf("TestBcdUnEven2: bcd Encode failed")
 	}
 
+	if bcdbuf[0] != 0x12 {
+		t.Errorf("TestBcdEven: bcdbuf[0] expected 0x12 got 0x%x", bcdbuf[0])
+	}
+
+	if bcdbuf[1] != 0x34 {
+		t.Errorf("TestBcdEven: bcdbuf[1] expected 0x34 got 0x%x", bcdbuf[1])
+	}
+
+	if bcdbuf[2] != 0x5f {
+		t.Errorf("TestBcdEven: bcdbuf[2] expected 0x5f got 0x%x", bcdbuf[2])
+	}
+
+	hexdata := make([]byte, hex.EncodedLen(len(bcdbuf)))
+	hex.Encode(hexdata, bcdbuf)
+	fmt.Printf("TestBcdUnEven2: 12345f encoded data [%s]\n", string(hexdata))
+
 	bcdstr := bcd.Decode(bcdbuf)
 	if bcdstr != string("12345f") {
 		t.Errorf("TestBcdUnEven2: bcd Decode failed: got %s expect %s", bcdstr, string("12345f"))
 	}
 }
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+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"))
+	}
+}