1
0
mirror of https://github.com/alecthomas/chroma.git synced 2025-03-19 21:10:15 +02:00
chroma/formatters/html/html_test.go

61 lines
1.4 KiB
Go
Raw Normal View History

package html
import (
"errors"
2017-09-19 23:04:10 +10:00
"io/ioutil"
"testing"
"github.com/alecthomas/assert"
2017-09-19 23:04:10 +10:00
2017-09-20 13:30:46 +10:00
"github.com/alecthomas/chroma"
2017-09-19 23:04:10 +10:00
"github.com/alecthomas/chroma/lexers"
"github.com/alecthomas/chroma/styles"
)
func TestCompressStyle(t *testing.T) {
2017-09-18 14:19:59 +10:00
style := "color: #888888; background-color: #faffff"
actual := compressStyle(style)
2017-09-18 14:19:59 +10:00
expected := "color:#888;background-color:#faffff"
2017-09-19 23:04:10 +10:00
assert.Equal(t, expected, actual)
}
func BenchmarkHTMLFormatter(b *testing.B) {
formatter := New()
b.ResetTimer()
for i := 0; i < b.N; i++ {
it, err := lexers.Go.Tokenise(nil, "package main\nfunc main()\n{\nprintln(`hello world`)\n}\n")
assert.NoError(b, err)
err = formatter.Format(ioutil.Discard, styles.Fallback, it)
2017-09-19 23:04:10 +10:00
assert.NoError(b, err)
}
}
2017-09-20 13:30:46 +10:00
func TestSplitTokensIntoLines(t *testing.T) {
in := []*chroma.Token{
{Value: "hello", Type: chroma.NameKeyword},
{Value: " world\nwhat?\n", Type: chroma.NameKeyword},
}
expected := [][]*chroma.Token{
2017-09-26 22:05:44 +10:00
{
2017-09-20 13:30:46 +10:00
{Type: chroma.NameKeyword, Value: "hello"},
{Type: chroma.NameKeyword, Value: " world\n"},
},
2017-09-26 22:05:44 +10:00
{
2017-09-20 13:30:46 +10:00
{Type: chroma.NameKeyword, Value: "what?\n"},
},
2017-09-26 22:05:44 +10:00
{
2017-09-20 13:30:46 +10:00
{Type: chroma.NameKeyword},
},
}
actual := splitTokensIntoLines(in)
assert.Equal(t, expected, actual)
}
func TestIteratorPanicRecovery(t *testing.T) {
it := func() *chroma.Token {
panic(errors.New("bad"))
}
err := New().Format(ioutil.Discard, styles.Fallback, it)
assert.Error(t, err)
}