mirror of https://github.com/anoshenko/rui.git
51 lines
1.7 KiB
Go
51 lines
1.7 KiB
Go
|
package rui
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestSizeFunc(t *testing.T) {
|
||
|
session := new(sessionData)
|
||
|
session.getCurrentTheme().SetConstant("a1", "120px", "120px")
|
||
|
|
||
|
SetErrorLog(func(text string) {
|
||
|
t.Error(text)
|
||
|
})
|
||
|
SetDebugLog(func(text string) {
|
||
|
t.Log(text)
|
||
|
})
|
||
|
|
||
|
testFunc := func(fn SizeFunc, str, css string) {
|
||
|
if fn != nil {
|
||
|
if text := fn.String(); str != text {
|
||
|
t.Error("String() error.\nResult: \"" + text + "\"\nExpected: \"" + str + `"`)
|
||
|
}
|
||
|
if text := fn.cssString(session); css != text {
|
||
|
t.Error("cssString() error.\nResult: \"" + text + "\"\nExpected: \"" + css + `"`)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
testFunc(MinSize("100%", Px(10)), `min(100%, 10px)`, `min(100%, 10px)`)
|
||
|
testFunc(MaxSize(Percent(100), "@a1"), `max(100%, @a1)`, `max(100%, 120px)`)
|
||
|
testFunc(SumSize(Percent(100), "@a1"), `sum(100%, @a1)`, `calc(100% + 120px)`)
|
||
|
testFunc(SubSize(Percent(100), "@a1"), `sub(100%, @a1)`, `calc(100% - 120px)`)
|
||
|
testFunc(MulSize(Percent(100), "@a1"), `mul(100%, @a1)`, `calc(100% * 120px)`)
|
||
|
testFunc(DivSize(Percent(100), "@a1"), `div(100%, @a1)`, `calc(100% / 120px)`)
|
||
|
testFunc(ClampSize(Percent(20), "@a1", Percent(40)), `clamp(20%, @a1, 40%)`, `clamp(20%, 120px, 40%)`)
|
||
|
|
||
|
testFunc(MaxSize(SubSize(Percent(100), "@a1"), "@a1"), `max(sub(100%, @a1), @a1)`, `max(100% - 120px, 120px)`)
|
||
|
|
||
|
testParse := func(str, css string) {
|
||
|
if fn := parseSizeFunc(str); fn != nil {
|
||
|
testFunc(fn, str, css)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
testParse(`min(100%, 10px)`, `min(100%, 10px)`)
|
||
|
testParse(`max(100%, @a1)`, `max(100%, 120px)`)
|
||
|
testParse(`max(sub(100%, @a1), @a1)`, `max(100% - 120px, 120px)`)
|
||
|
testParse(`mul(sub(100%, @a1), @a1)`, `calc((100% - 120px) * 120px)`)
|
||
|
testParse(`mul(sub(100%, @a1), div(mul(@a1, 3), 2))`, `calc((100% - 120px) * ((120px * 3) / 2))`)
|
||
|
}
|