func TestComputeNumberMulWithUnit(t *testing.T) { val := Compute(ast.NewOp(ast.T_MUL), ast.NewNumber(10, ast.NewUnit(ast.T_UNIT_PX, nil), nil), ast.NewNumber(3, nil, nil)) num, ok := val.(*ast.Number) assert.True(t, ok) assert.Equal(t, ast.T_UNIT_PX, num.Unit.Type) assert.Equal(t, 30.0, num.Value) }
func TestComputeNumberDivWithUnit(t *testing.T) { val := Compute(ast.NewOp(ast.T_DIV), ast.NewNumber(10, ast.NewUnit(ast.T_UNIT_PX, nil), nil), ast.NewNumber(2, nil, nil)) num, ok := val.(*ast.Number) assert.True(t, ok) assert.NotNil(t, num.Unit) assert.Equal(t, ast.T_UNIT_PX, num.Unit.Type) assert.Equal(t, 5.0, num.Value) }
func TestComputeNumberAddNumberIncompatibleUnit(t *testing.T) { val := Compute(ast.NewOp(ast.T_PLUS), ast.NewNumber(10, ast.NewUnit(ast.T_UNIT_PX, nil), nil), ast.NewNumber(3, ast.NewUnit(ast.T_UNIT_PT, nil), nil)) assert.Nil(t, val) }
func TestReduceCSSSlashExpr(t *testing.T) { expr := ast.NewBinaryExpr(ast.NewOp(ast.T_DIV), ast.NewNumber(10, ast.NewUnit(ast.T_UNIT_PX, nil), nil), ast.NewNumber(3, ast.NewUnit(ast.T_UNIT_PX, nil), nil), false) ok := CanReduceExpr(expr) assert.False(t, ok) }