package htmlescape_test import ( "testing" "bytes" "sourcecode.social/reiver/go-htmlescape" ) func TestAppendString(t *testing.T) { tests := []struct{ Bytes []byte String string Expected []byte }{ { Bytes: []byte("Hello world! 🙂 Take a look at this: "), String: "", Expected: []byte("Hello world! 🙂 Take a look at this: "), }, { Bytes: []byte("Hello world! 🙂 Take a look at this: "), String: "This is NOT bold!", Expected: []byte("Hello world! 🙂 Take a look at this: This is NOT <b>bold</b>!"), }, { Bytes: []byte("Hello world! 🙂 Take a look at this: "), String: `"this is a quotation"`, Expected: []byte("Hello world! 🙂 Take a look at this: "this is a quotation""), }, { Bytes: []byte("Hello world! 🙂 Take a look at this: "), String: "\t3 < 5\r\n3 > 2\x00", Expected: []byte("Hello world! 🙂 Take a look at this: 3 < 5 3 > 2�"), }, } for testNumber, test := range tests { var p []byte = append([]byte(nil), test.Bytes...) actual, err := htmlescape.AppendString(p, test.String) if nil != err { t.Errorf("For test #%d, did not expect to get an error but actually got one." , testNumber) t.Logf("ERROR: (%T) %s", err, err) t.Logf("STRING: %q", test.String) t.Logf("BYTES: %q", test.Bytes) continue } expected := test.Expected if !bytes.Equal(expected, actual) { t.Errorf("For test #%d, the actual resulting value of the append is not what was expected.", testNumber) t.Logf("EXPECTED: %q", expected) t.Logf("ACTUAL: %q", actual) t.Logf("STRING: %q", test.String) t.Logf("BYTES: %q", test.Bytes) continue } } }