fixed fragment char handling
diff --git a/src/gojsonreference/reference.go b/src/gojsonreference/reference.go
index c8dea40..64a9604 100644
--- a/src/gojsonreference/reference.go
+++ b/src/gojsonreference/reference.go
@@ -18,6 +18,10 @@
"strings"
)
+const (
+ FRAGMENT_CHAR = `#`
+)
+
func NewJsonReference(jsonReferenceString string) (JsonReference, error) {
var r JsonReference
@@ -45,10 +49,15 @@
}
func (r *JsonReference) String() string {
+
if r.referenceUrl != nil {
return r.referenceUrl.String()
}
+ if r.HasFragmentOnly {
+ return FRAGMENT_CHAR + r.referencePointer.String()
+ }
+
return r.referencePointer.String()
}
@@ -58,8 +67,8 @@
var err error
// fragment only
- if strings.HasPrefix(jsonReferenceString, "#") {
- r.referencePointer, err = gojsonpointer.NewJsonPointer(jsonReferenceString)
+ if strings.HasPrefix(jsonReferenceString, FRAGMENT_CHAR) {
+ r.referencePointer, err = gojsonpointer.NewJsonPointer(jsonReferenceString[1:])
if err != nil {
return nil
}
diff --git a/src/gojsonreference/reference_test.go b/src/gojsonreference/reference_test.go
index d2abbb6..24afd62 100644
--- a/src/gojsonreference/reference_test.go
+++ b/src/gojsonreference/reference_test.go
@@ -25,23 +25,23 @@
}
if in != r1.String() {
- t.Errorf("Get(%v) = %v, expect %v", in, r1.String(), in)
+ t.Errorf("NewJsonReference(%v) = %v, expect %v", in, r1.String(), in)
}
if r1.HasFragmentOnly != false {
- t.Errorf("Get(%v)::HasFragmentOnly %v expect %v", in, r1.HasFragmentOnly, false)
+ t.Errorf("NewJsonReference(%v)::HasFragmentOnly %v expect %v", in, r1.HasFragmentOnly, false)
}
if r1.HasFullUrl != true {
- t.Errorf("Get(%v)::HasFullUrl %v expect %v", in, r1.HasFullUrl, true)
+ t.Errorf("NewJsonReference(%v)::HasFullUrl %v expect %v", in, r1.HasFullUrl, true)
}
if r1.HasUrlPathOnly != false {
- t.Errorf("Get(%v)::HasUrlPathOnly %v expect %v", in, r1.HasUrlPathOnly, false)
+ t.Errorf("NewJsonReference(%v)::HasUrlPathOnly %v expect %v", in, r1.HasUrlPathOnly, false)
}
if r1.HasFileScheme != false {
- t.Errorf("Get(%v)::HasFileScheme %v expect %v", in, r1.HasFileScheme, false)
+ t.Errorf("NewJsonReference(%v)::HasFileScheme %v expect %v", in, r1.HasFileScheme, false)
}
}
@@ -55,23 +55,23 @@
}
if in != r1.String() {
- t.Errorf("Get(%v) = %v, expect %v", in, r1.String(), in)
+ t.Errorf("NewJsonReference(%v) = %v, expect %v", in, r1.String(), in)
}
if r1.HasFragmentOnly != false {
- t.Errorf("Get(%v)::HasFragmentOnly %v expect %v", in, r1.HasFragmentOnly, false)
+ t.Errorf("NewJsonReference(%v)::HasFragmentOnly %v expect %v", in, r1.HasFragmentOnly, false)
}
if r1.HasFullUrl != true {
- t.Errorf("Get(%v)::HasFullUrl %v expect %v", in, r1.HasFullUrl, true)
+ t.Errorf("NewJsonReference(%v)::HasFullUrl %v expect %v", in, r1.HasFullUrl, true)
}
if r1.HasUrlPathOnly != false {
- t.Errorf("Get(%v)::HasUrlPathOnly %v expect %v", in, r1.HasUrlPathOnly, false)
+ t.Errorf("NewJsonReference(%v)::HasUrlPathOnly %v expect %v", in, r1.HasUrlPathOnly, false)
}
if r1.HasFileScheme != false {
- t.Errorf("Get(%v)::HasFileScheme %v expect %v", in, r1.HasFileScheme, false)
+ t.Errorf("NewJsonReference(%v)::HasFileScheme %v expect %v", in, r1.HasFileScheme, false)
}
}
@@ -85,23 +85,23 @@
}
if in != r1.String() {
- t.Errorf("Get(%v) = %v, expect %v", in, r1.String(), in)
+ t.Errorf("NewJsonReference(%v) = %v, expect %v", in, r1.String(), in)
}
if r1.HasFragmentOnly != true {
- t.Errorf("Get(%v)::HasFragmentOnly %v expect %v", in, r1.HasFragmentOnly, true)
+ t.Errorf("NewJsonReference(%v)::HasFragmentOnly %v expect %v", in, r1.HasFragmentOnly, true)
}
if r1.HasFullUrl != false {
- t.Errorf("Get(%v)::HasFullUrl %v expect %v", in, r1.HasFullUrl, false)
+ t.Errorf("NewJsonReference(%v)::HasFullUrl %v expect %v", in, r1.HasFullUrl, false)
}
if r1.HasUrlPathOnly != false {
- t.Errorf("Get(%v)::HasUrlPathOnly %v expect %v", in, r1.HasUrlPathOnly, false)
+ t.Errorf("NewJsonReference(%v)::HasUrlPathOnly %v expect %v", in, r1.HasUrlPathOnly, false)
}
if r1.HasFileScheme != false {
- t.Errorf("Get(%v)::HasFileScheme %v expect %v", in, r1.HasFileScheme, false)
+ t.Errorf("NewJsonReference(%v)::HasFileScheme %v expect %v", in, r1.HasFileScheme, false)
}
}
@@ -115,22 +115,41 @@
}
if in != r1.String() {
- t.Errorf("Get(%v) = %v, expect %v", in, r1.String(), in)
+ t.Errorf("NewJsonReference(%v) = %v, expect %v", in, r1.String(), in)
}
if r1.HasFragmentOnly != false {
- t.Errorf("Get(%v)::HasFragmentOnly %v expect %v", in, r1.HasFragmentOnly, false)
+ t.Errorf("NewJsonReference(%v)::HasFragmentOnly %v expect %v", in, r1.HasFragmentOnly, false)
}
if r1.HasFullUrl != false {
- t.Errorf("Get(%v)::HasFullUrl %v expect %v", in, r1.HasFullUrl, false)
+ t.Errorf("NewJsonReference(%v)::HasFullUrl %v expect %v", in, r1.HasFullUrl, false)
}
if r1.HasUrlPathOnly != true {
- t.Errorf("Get(%v)::HasUrlPathOnly %v expect %v", in, r1.HasUrlPathOnly, true)
+ t.Errorf("NewJsonReference(%v)::HasUrlPathOnly %v expect %v", in, r1.HasUrlPathOnly, true)
}
if r1.HasFileScheme != false {
- t.Errorf("Get(%v)::HasFileScheme %v expect %v", in, r1.HasFileScheme, false)
+ t.Errorf("NewJsonReference(%v)::HasFileScheme %v expect %v", in, r1.HasFileScheme, false)
+ }
+}
+
+func TestInheritsValid(t *testing.T) {
+
+ in1 := "http://www.test.com/doc.json"
+ in2 := "#/a/b"
+ out := in1 + in2
+
+ r1, _ := NewJsonReference(in1)
+ r2, _ := NewJsonReference(in2)
+
+ result, err := Inherits(r1, r2)
+ if err != nil {
+ t.Errorf("Inherits(%s,%s) error %s", r1.String(), r2.String(), err.Error())
+ }
+
+ if result.String() != out {
+ t.Errorf("Inherits(%s,%s) = %s, expect %s", r1.String(), r2.String(), result.String(), out)
}
}