Skip to content

Commit

Permalink
Fleshed out Hex function tests and introduced clamp function for clarity
Browse files Browse the repository at this point in the history
  • Loading branch information
Tigraine committed Feb 9, 2011
1 parent d20fa0c commit 179b09d
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 8 deletions.
13 changes: 9 additions & 4 deletions src/dotless.Core/Parser/Functions/HexFunction.cs
Expand Up @@ -2,7 +2,7 @@

namespace dotless.Core.Parser.Functions
{
using Infrastructure;
using Infrastructure;
using Infrastructure.Nodes;
using Tree;

Expand All @@ -13,11 +13,16 @@ protected override Node Eval(Env env, Number number, Node[] args)
if (!string.IsNullOrEmpty(number.Unit))
throw new ParsingException(string.Format("Expected unitless number in function 'hex', found {0}", number.ToCSS(env)), number.Index);

if (number.Value < 0) number.Value = 0;
if (number.Value > 255) number.Value = 255;
number.Value = Clamp(number.Value, 255, 0);

return new TextNode(((int)number.Value).ToString("X2"));

}

private static double Clamp(double value, double max, double min)
{
if (value < min) value = min;
if (value > max) value = max;
return value;
}
}
}
20 changes: 16 additions & 4 deletions src/dotless.Test/Specs/Functions/HexFixture.cs
Expand Up @@ -11,11 +11,23 @@ public void TestHex()
AssertExpression("99", "hex(153)");
AssertExpression("F0", "hex(240)");
AssertExpression("FF", "hex(255)");
}

AssertExpression("00", "hex(-1)");
AssertExpression("FF", "hex(999)");
[Test]
public void ValuesBelow_0_AreInterpretedAs_0()
{
AssertExpression("00", "hex(-1)");
}

AssertExpressionError("Expected unitless number in function 'hex', found 5px", 4, "hex(5px)");
}
[Test]
public void ValuesAbove_255_AreInterpretedAs_FF()
{
AssertExpression("FF", "hex(999)");
}
[Test]
public void ThrowsExpressionError_WhenNumberPassedHasUnit()
{
AssertExpressionError("Expected unitless number in function 'hex', found 5px", 4, "hex(5px)");
}
}
}

0 comments on commit 179b09d

Please sign in to comment.