Skip to content
Snippets Groups Projects
iri_fix_importer_test.go 1.57 KiB
Newer Older
package core

import (
	"bytes"
	"io"
	"io/ioutil"
	"testing"
)

// Importer that stores all imported bytes to buffer sink.
type stringimporter struct {
	sink []byte
}

func (sim *stringimporter) Import(rdf io.Reader) error {
	if bs, err := ioutil.ReadAll(rdf); err != nil {
		return err
	} else {
		sim.sink = bs
		return nil
	}
}

func (sim *stringimporter) Sink() string {
	return string(sim.sink)
}

func TestZeroQuotes(t *testing.T) {
	iri := `abcdefghijklmnopqrstuvwxzy`
	start := bytes.NewBufferString(iri)

	sim := stringimporter{}

	ifim := IriFixImporter{
		Next: &sim,
	}

	if err := ifim.Import(start); err != nil {
		t.Errorf("import failed: %v", err)
	}

	imported := sim.Sink()

	if iri != imported {
		t.Errorf("iri=%v and imported=%v do not match", iri, imported)
	}
}

func TestZeroChange(t *testing.T) {
	iri := `abcdefghijklm"nopqrs"tuvwxzy`
	start := bytes.NewBufferString(iri)

	sim := stringimporter{}

	ifim := IriFixImporter{
		Next: &sim,
	}

	if err := ifim.Import(start); err != nil {
		t.Errorf("import failed: %v", err)
	}

	imported := sim.Sink()

	if iri != imported {
		t.Errorf("iri=%v and imported=%v do not match", iri, imported)
	}
}

func TestPipe(t *testing.T) {
	iri := `abcdefghijklm"no|pqrs"tuvwxzy`
	escaped := `abcdefghijklm"no%7Cpqrs"tuvwxzy`
	start := bytes.NewBufferString(iri)

	sim := stringimporter{}

	ifim := IriFixImporter{
		Next: &sim,
	}

	if err := ifim.Import(start); err != nil {
		t.Errorf("import failed: %v", err)
	}

	imported := sim.Sink()

	if escaped != imported {
		t.Errorf("escaped=%v and imported=%v do not match", escaped, imported)
	}
}