https://github.com/google/cayley
Tip revision: 2085a16ba8fe53ee9d3f2e2b829e06313604f527 authored by Paul Severance on 06 February 2017, 13:18:10 UTC
add http interface documentation
add http interface documentation
Tip revision: 2085a16
graphml_test.go
package graphml_test
import (
"bytes"
"testing"
"github.com/cayleygraph/cayley/quad"
"github.com/cayleygraph/cayley/quad/graphml"
)
var testData = []struct {
quads []quad.Quad
data string
}{
{
[]quad.Quad{
{
Subject: quad.BNode("subject1"),
Predicate: quad.IRI("/film/performance/character"),
Object: quad.String("Tomás de Torquemada"),
Label: nil,
},
{
Subject: quad.BNode("subject1"),
Predicate: quad.IRI("http://an.example/predicate1"),
Object: quad.String("object1"),
Label: nil,
},
{
Subject: quad.IRI("http://example.org/bob#me"),
Predicate: quad.IRI("http://schema.org/birthDate"),
Object: quad.TypedString{
Value: "1990-07-04",
Type: "http://www.w3.org/2001/XMLSchema#date",
},
Label: nil,
},
},
`<?xml version="1.0" encoding="UTF-8"?>
<graphml xmlns="http://graphml.graphdrawing.org/xmlns"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">
<key id="d0" for="node" attr.name="description" attr.type="string"/>
<key id="d1" for="edge" attr.name="description" attr.type="string"/>
<graph id="G" edgedefault="directed">
<node id="n0"><data key="d0">_:subject1</data></node>
<node id="n1"><data key="d0">"Tomás de Torquemada"</data></node>
<edge source="n0" target="n1"><data key="d1"></film/performance/character></data></edge>
<node id="n2"><data key="d0">"object1"</data></node>
<edge source="n0" target="n2"><data key="d1"><http://an.example/predicate1></data></edge>
<node id="n3"><data key="d0"><http://example.org/bob#me></data></node>
<node id="n4"><data key="d0">"1990-07-04"^^<http://www.w3.org/2001/XMLSchema#date></data></node>
<edge source="n3" target="n4"><data key="d1"><http://schema.org/birthDate></data></edge>
</graph>
</graphml>
`,
},
}
func TestWriter(t *testing.T) {
buf := bytes.NewBuffer(nil)
for _, c := range testData {
buf.Reset()
w := graphml.NewWriter(buf)
n, err := quad.Copy(w, quad.NewReader(c.quads))
if err != nil {
t.Fatalf("write failed after %d quads: %v", n, err)
}
if err = w.Close(); err != nil {
t.Fatal("error on close:", err)
}
if c.data != buf.String() {
t.Fatalf("wrong output:\n%s\n\nvs\n\n%s", buf.String(), c.data)
}
}
}