105 lines
2.4 KiB
Go
105 lines
2.4 KiB
Go
package check_test
|
|
|
|
import (
|
|
. "gopkg.in/check.v1"
|
|
)
|
|
|
|
var _ = Suite(&PrinterS{})
|
|
|
|
type PrinterS struct{}
|
|
|
|
func (s *PrinterS) TestCountSuite(c *C) {
|
|
suitesRun += 1
|
|
}
|
|
|
|
var printTestFuncLine int
|
|
|
|
func init() {
|
|
printTestFuncLine = getMyLine() + 3
|
|
}
|
|
|
|
func printTestFunc() {
|
|
println(1) // Comment1
|
|
if 2 == 2 { // Comment2
|
|
println(3) // Comment3
|
|
}
|
|
switch 5 {
|
|
case 6: println(6) // Comment6
|
|
println(7)
|
|
}
|
|
switch interface{}(9).(type) {// Comment9
|
|
case int: println(10)
|
|
println(11)
|
|
}
|
|
select {
|
|
case <-(chan bool)(nil): println(14)
|
|
println(15)
|
|
default: println(16)
|
|
println(17)
|
|
}
|
|
println(19,
|
|
20)
|
|
_ = func() { println(21)
|
|
println(22)
|
|
}
|
|
println(24, func() {
|
|
println(25)
|
|
})
|
|
// Leading comment
|
|
// with multiple lines.
|
|
println(29) // Comment29
|
|
}
|
|
|
|
var printLineTests = []struct {
|
|
line int
|
|
output string
|
|
}{
|
|
{1, "println(1) // Comment1"},
|
|
{2, "if 2 == 2 { // Comment2\n ...\n}"},
|
|
{3, "println(3) // Comment3"},
|
|
{5, "switch 5 {\n...\n}"},
|
|
{6, "case 6:\n println(6) // Comment6\n ..."},
|
|
{7, "println(7)"},
|
|
{9, "switch interface{}(9).(type) { // Comment9\n...\n}"},
|
|
{10, "case int:\n println(10)\n ..."},
|
|
{14, "case <-(chan bool)(nil):\n println(14)\n ..."},
|
|
{15, "println(15)"},
|
|
{16, "default:\n println(16)\n ..."},
|
|
{17, "println(17)"},
|
|
{19, "println(19,\n 20)"},
|
|
{20, "println(19,\n 20)"},
|
|
{21, "_ = func() {\n println(21)\n println(22)\n}"},
|
|
{22, "println(22)"},
|
|
{24, "println(24, func() {\n println(25)\n})"},
|
|
{25, "println(25)"},
|
|
{26, "println(24, func() {\n println(25)\n})"},
|
|
{29, "// Leading comment\n// with multiple lines.\nprintln(29) // Comment29"},
|
|
}
|
|
|
|
func (s *PrinterS) TestPrintLine(c *C) {
|
|
for _, test := range printLineTests {
|
|
output, err := PrintLine("printer_test.go", printTestFuncLine+test.line)
|
|
c.Assert(err, IsNil)
|
|
c.Assert(output, Equals, test.output)
|
|
}
|
|
}
|
|
|
|
var indentTests = []struct {
|
|
in, out string
|
|
}{
|
|
{"", ""},
|
|
{"\n", "\n"},
|
|
{"a", ">>>a"},
|
|
{"a\n", ">>>a\n"},
|
|
{"a\nb", ">>>a\n>>>b"},
|
|
{" ", ">>> "},
|
|
}
|
|
|
|
func (s *PrinterS) TestIndent(c *C) {
|
|
for _, test := range indentTests {
|
|
out := Indent(test.in, ">>>")
|
|
c.Assert(out, Equals, test.out)
|
|
}
|
|
|
|
}
|