packer-cn/packer/ui_test.go

77 lines
1.6 KiB
Go
Raw Normal View History

2013-03-24 17:31:18 -04:00
package packer
import (
"bytes"
"cgl.tideland.biz/asserts"
2013-03-24 17:47:59 -04:00
"testing"
2013-03-24 17:31:18 -04:00
)
2013-04-20 21:55:02 -04:00
func testUi() *ReaderWriterUi {
return &ReaderWriterUi{
new(bytes.Buffer),
new(bytes.Buffer),
}
}
2013-03-24 17:31:18 -04:00
2013-05-21 16:20:51 -04:00
func TestPrefixedUi(t *testing.T) {
assert := asserts.NewTestingAsserts(t, true)
bufferUi := testUi()
prefixUi := &PrefixedUi{"mitchell", bufferUi}
prefixUi.Say("foo")
assert.Equal(readWriter(bufferUi), "mitchell: foo\n", "should have prefix")
prefixUi.Error("bar")
assert.Equal(readWriter(bufferUi), "mitchell: bar\n", "should have prefix")
}
func TestPrefixedUi_ImplUi(t *testing.T) {
var raw interface{}
raw = &PrefixedUi{}
if _, ok := raw.(Ui); !ok {
t.Fatalf("PrefixedUi must implement Ui")
}
}
func TestReaderWriterUi_ImplUi(t *testing.T) {
var raw interface{}
raw = &ReaderWriterUi{}
if _, ok := raw.(Ui); !ok {
t.Fatalf("ReaderWriterUi must implement Ui")
}
}
2013-05-08 18:12:48 -04:00
func TestReaderWriterUi_Error(t *testing.T) {
assert := asserts.NewTestingAsserts(t, true)
bufferUi := testUi()
bufferUi.Error("foo")
assert.Equal(readWriter(bufferUi), "foo\n", "basic output")
2013-05-08 18:12:48 -04:00
bufferUi.Error("%d", 5)
assert.Equal(readWriter(bufferUi), "5\n", "formatting")
2013-05-08 18:12:48 -04:00
}
2013-03-24 17:31:18 -04:00
func TestReaderWriterUi_Say(t *testing.T) {
assert := asserts.NewTestingAsserts(t, true)
2013-04-20 21:55:02 -04:00
bufferUi := testUi()
2013-03-24 17:31:18 -04:00
bufferUi.Say("foo")
assert.Equal(readWriter(bufferUi), "foo\n", "basic output")
2013-03-24 17:31:18 -04:00
bufferUi.Say("%d", 5)
assert.Equal(readWriter(bufferUi), "5\n", "formatting")
2013-03-24 17:31:18 -04:00
}
// This reads the output from the bytes.Buffer in our test object
// and then resets the buffer.
func readWriter(ui *ReaderWriterUi) (result string) {
buffer := ui.Writer.(*bytes.Buffer)
result = buffer.String()
buffer.Reset()
return
}