mirror of
https://github.com/wavetermdev/waveterm.git
synced 2024-12-21 16:38:23 +01:00
82 lines
1.9 KiB
Go
82 lines
1.9 KiB
Go
|
// Copyright 2024, Command Line Inc.
|
||
|
// SPDX-License-Identifier: Apache-2.0
|
||
|
|
||
|
package cssparser
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"log"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func compareMaps(a, b map[string]string) error {
|
||
|
if len(a) != len(b) {
|
||
|
return fmt.Errorf("map length mismatch: %d != %d", len(a), len(b))
|
||
|
}
|
||
|
for k, v := range a {
|
||
|
if b[k] != v {
|
||
|
return fmt.Errorf("value mismatch for key %s: %q != %q", k, v, b[k])
|
||
|
}
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func TestParse1(t *testing.T) {
|
||
|
style := `background: url("example;with;semicolons.jpg"); color: red; margin-right: 5px; content: "hello;world";`
|
||
|
p := MakeParser(style)
|
||
|
parsed, err := p.Parse()
|
||
|
if err != nil {
|
||
|
t.Fatalf("Parse failed: %v", err)
|
||
|
return
|
||
|
}
|
||
|
expected := map[string]string{
|
||
|
"background": `url("example;with;semicolons.jpg")`,
|
||
|
"color": "red",
|
||
|
"margin-right": "5px",
|
||
|
"content": `"hello;world"`,
|
||
|
}
|
||
|
if err := compareMaps(parsed, expected); err != nil {
|
||
|
t.Fatalf("Parsed map does not match expected: %v", err)
|
||
|
}
|
||
|
|
||
|
style = `margin-right: calc(10px + 5px); color: red; font-family: "Arial";`
|
||
|
p = MakeParser(style)
|
||
|
parsed, err = p.Parse()
|
||
|
if err != nil {
|
||
|
t.Fatalf("Parse failed: %v", err)
|
||
|
return
|
||
|
}
|
||
|
expected = map[string]string{
|
||
|
"margin-right": `calc(10px + 5px)`,
|
||
|
"color": "red",
|
||
|
"font-family": `"Arial"`,
|
||
|
}
|
||
|
if err := compareMaps(parsed, expected); err != nil {
|
||
|
t.Fatalf("Parsed map does not match expected: %v", err)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestParserErrors(t *testing.T) {
|
||
|
style := `hello more: bad;`
|
||
|
p := MakeParser(style)
|
||
|
_, err := p.Parse()
|
||
|
if err == nil {
|
||
|
t.Fatalf("expected error, got nil")
|
||
|
}
|
||
|
log.Printf("got expected error: %v\n", err)
|
||
|
style = `background: url("example.jpg`
|
||
|
p = MakeParser(style)
|
||
|
_, err = p.Parse()
|
||
|
if err == nil {
|
||
|
t.Fatalf("expected error, got nil")
|
||
|
}
|
||
|
log.Printf("got expected error: %v\n", err)
|
||
|
style = `foo: url(...`
|
||
|
p = MakeParser(style)
|
||
|
_, err = p.Parse()
|
||
|
if err == nil {
|
||
|
t.Fatalf("expected error, got nil")
|
||
|
}
|
||
|
log.Printf("got expected error: %v\n", err)
|
||
|
}
|