summaryrefslogtreecommitdiff
path: root/lib/converter_test.go
blob: 9c92a5690cb48b84d825dddfb9a3d08fb8801584 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package lib

import (
	"strings"
	"testing"
)

func TestRegisterInputConverter(t *testing.T) {
	resetInputConverters()
	if err := RegisterInputConverter("json", mockInputConverter{typ: "json", action: ActionAdd}); err != nil {
		t.Fatalf("RegisterInputConverter() error = %v", err)
	}
	if err := RegisterInputConverter("json", mockInputConverter{}); err != ErrDuplicatedConverter {
		t.Fatalf("expected ErrDuplicatedConverter, got %v", err)
	}
}

func TestRegisterOutputConverter(t *testing.T) {
	resetOutputConverters()
	if err := RegisterOutputConverter("txt", mockOutputConverter{typ: "txt", action: ActionOutput}); err != nil {
		t.Fatalf("RegisterOutputConverter() error = %v", err)
	}
	if err := RegisterOutputConverter("txt", mockOutputConverter{}); err != ErrDuplicatedConverter {
		t.Fatalf("expected ErrDuplicatedConverter, got %v", err)
	}
}

func TestListConverters(t *testing.T) {
	resetInputConverters()
	resetOutputConverters()

	_ = RegisterInputConverter("b", mockInputConverter{typ: "b", desc: "second"})
	_ = RegisterInputConverter("a", mockInputConverter{typ: "a", desc: "first"})
	_ = RegisterOutputConverter("x", mockOutputConverter{typ: "x", desc: "out"})

	out := captureOutput(t, func() {
		ListInputConverter()
		ListOutputConverter()
	})

	if !strings.Contains(out, "a") || !strings.Contains(out, "b") || !strings.Contains(out, "x") {
		t.Fatalf("unexpected output: %s", out)
	}
}