

body {
    color: 1 + 2 + 5;
    color: 1 + 2 * 5 + 5;
    height: 10px/10px;
    color: 10px/2 + 1;
    color: (10px/2);
    bottom: (4/2px);
    top: 1em * (1 * 24px - 0) / 16px;
    left: 1 - 2cm;
    top: (2cm/12px);
}

div {
    color: 4 == 3;
    color: hello == hello;

    color: 4 > 3;
    color: 4 < 3;
    color: what > 3;
}


#units {
    test: 1in + 4cm;
    test: 12mm + 1;
    test: 1 + 3em;
    test: 1mm + 1cm;
    test: 1cm + 1mm;
}

#modulo {
    test: 3 % 2;
    test: 4cm % 3;
}

#colors {
    color: red + rgb(1,2,3);
    color: red - rgb(1,2,3);
    color: rgba(1,2,3, 0.5) * rgba(3,4,5, 0.5);
    color: rgba(10,15,20, 0.5) / rgba(2,2,2, 0.5);

    color: rgba(1,2,3, 0.5) * 2;
    color: rgba(1,2,3, 0.5) / 2;
    color: rgba(1,2,3, 0.5) + 2;
    color: rgba(1,2,3, 0.5) - 2;

    color: blue + 34;

    color: #fff == #000;
    color: #fff == #fff;

    color: #fff != #000;
    color: #fff != #fff;
}


#preserve {
    hello: what -going;
    hello: what - going;
}

#strings {
    hello: what -going;

    hello: what +going;
    hello: what+going;
    hello: what+ going;
    hello: what + going;

    hello: "what" + going;
    hello: going + "what";
    hello: "what" + "what";
}

#negation {
    $num: 100;
    a: -$num + 40;
    b: 10 -$num;
    b: 10 - $num;
}

#bools-fail {
    and: false and two;
    and: one and two;
    and: one and false;

    or: false or two;
    or: one or two;
    or: one or false;
}

#bools {
    and: (false and two);
    and: (one and two);
    and: (one and false);

    or: (false or two);
    or: (one or two);
    or: (one or false);
}


#nots-fail {
    not: not true + 2;
    not: not false;
    not: not 0;
    not: not 1;
    not: not "";
    not: not hello;
}

#nots {
    not: (not true) + 2;
    not: (not false);
    not: (not 0);
    not: (not 1);
    not: (not "");
    not: (not hello);
}

#string-test {
    str: hi == "hi";
    str: hi == "no";
    str: 'yes' == 'yes';

    $var1: "hello";
    $var2: hello;

    str: "#{$var1}" == '#{$var2}';

    str: xhello#{$var1}x == "x#{$var2}hellox"; // xhellohellofalse

    str: unit(10px) == px;
}


#special {
  cancel-unit: (10px / 10px);
}

// not expecting unary
$form-spacing: 1em;

.row .a { margin: 0-$form-spacing / 2; }
.row .b { margin: 0- $form-spacing / 2; }
.row .c { margin: 0 - $form-spacing / 2; }
.row .d { margin: 0 -$form-spacing / 2; }
.row .e { margin: 0 (-$form-spacing / 2); }

.alt .a { margin: 0-1em / 2; }
.alt .b { margin: 0- 1em / 2; }
.alt .c { margin: 0 - 1em / 2; }
.alt .d { margin: 0 -1em / 2; }
.alt .e { margin: 0 (-1em / 2); }

.row .f { margin: 0-$form-spacing * 2; }
.row .g { margin: 0- $form-spacing * 2; }
.row .h { margin: 0 - $form-spacing * 2; }
.row .i { margin: 0 -$form-spacing * 2; }
.row .j { margin: 0 (-$form-spacing * 2); }

.alt .f { margin: 0-1em * 2; }
.alt .g { margin: 0- 1em * 2; }
.alt .h { margin: 0 - 1em * 2; }
.alt .i { margin: 0 -1em * 2; }
.alt .j { margin: 0 (-1em * 2); }
