added automated tests
diff --git a/src/gojsonpointer/pointer_test.go b/src/gojsonpointer/pointer_test.go
new file mode 100644
index 0000000..a7a7afa
--- /dev/null
+++ b/src/gojsonpointer/pointer_test.go
@@ -0,0 +1,131 @@
+// author sigu-399
+// author-github https://github.com/sigu-399
+// author-mail sigu.399@gmail.com
+//
+// repository-name gojsonpointer
+// repository-desc An implementation of JSON Pointer - Go language
+//
+// description Automated tests on package.
+//
+// created 03-03-2013
+
+package gojsonpointer
+
+import (
+ "encoding/json"
+ "testing"
+)
+
+const (
+ TEST_DOCUMENT_NB_ELEMENTS = 11
+ TEST_DOCUMENT_STRING = `{
+"foo": ["bar", "baz"],
+"obj": { "a":1, "b":2, "c":[3,4] },
+"": 0,
+"a/b": 1,
+"c%d": 2,
+"e^f": 3,
+"g|h": 4,
+"i\\j": 5,
+"k\"l": 6,
+" ": 7,
+"m~n": 8
+}`
+)
+
+var testDocumentJson interface{}
+
+func init() {
+ json.Unmarshal([]byte(TEST_DOCUMENT_STRING), &testDocumentJson)
+}
+
+func TestEscaping(t *testing.T) {
+
+ ins := []string{`#/`, `/`, `#/a~1b`, `/a~1b`, `/c%d`, `/e^f`, `/g|h`, `/i\j`, `/k"l`, `/ `, `/m~0n`}
+ outs := []float64{0, 0, 1, 1, 2, 3, 4, 5, 6, 7, 8}
+
+ for i := range ins {
+
+ p, err := NewJsonPointer(ins[i])
+ if err != nil {
+ t.Errorf("NewJsonPointer(%v) error %v", ins[i], err.Error())
+ }
+
+ result, _, err := p.Get(testDocumentJson)
+ if err != nil {
+ t.Errorf("Get(%v) error %v", ins[i], err.Error())
+ }
+
+ if result != outs[i] {
+ t.Errorf("Get(%v) = %v, expect %v", ins[i], result, outs[i])
+ }
+ }
+
+}
+
+func TestFullDocument(t *testing.T) {
+
+ in := ``
+
+ p, err := NewJsonPointer(in)
+ if err != nil {
+ t.Errorf("NewJsonPointer(%v) error %v", in, err.Error())
+ }
+
+ result, _, err := p.Get(testDocumentJson)
+ if err != nil {
+ t.Errorf("Get(%v) error %v", in, err.Error())
+ }
+
+ if len(result.(map[string]interface{})) != TEST_DOCUMENT_NB_ELEMENTS {
+ t.Errorf("Get(%v) = %v, expect full document", in, result)
+ }
+}
+
+func TestArray(t *testing.T) {
+
+ ins := []string{`#/foo/0`, `/foo/0`, `/foo/1`}
+ outs := []string{"bar", "bar", "baz"}
+
+ for i := range ins {
+
+ p, err := NewJsonPointer(ins[i])
+ if err != nil {
+ t.Errorf("NewJsonPointer(%v) error %v", ins[i], err.Error())
+ }
+
+ result, _, err := p.Get(testDocumentJson)
+ if err != nil {
+ t.Errorf("Get(%v) error %v", ins[i], err.Error())
+ }
+
+ if result != outs[i] {
+ t.Errorf("Get(%v) = %v, expect %v", ins[i], result, outs[i])
+ }
+ }
+
+}
+
+func TestObject(t *testing.T) {
+
+ ins := []string{`/obj/a`, `/obj/b`, `/obj/c/0`, `/obj/c/1`, `#/obj/c/1`}
+ outs := []float64{1, 2, 3, 4, 4}
+
+ for i := range ins {
+
+ p, err := NewJsonPointer(ins[i])
+ if err != nil {
+ t.Errorf("NewJsonPointer(%v) error %v", ins[i], err.Error())
+ }
+
+ result, _, err := p.Get(testDocumentJson)
+ if err != nil {
+ t.Errorf("Get(%v) error %v", ins[i], err.Error())
+ }
+
+ if result != outs[i] {
+ t.Errorf("Get(%v) = %v, expect %v", ins[i], result, outs[i])
+ }
+ }
+
+}