Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions Liquid.NET.Tests/Utils/LiquidValueConverterTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,29 @@ public void It_Should_Covert_A_DateTime()
Assert.Equal(new LiquidDate(dateTime), val.Value);
}

[Fact]
public void It_Should_Convert_Guid_To_LiquidString()
{
var guid = Guid.NewGuid();
var val = _converter.Convert(guid);

Assert.True(val.HasValue);
Assert.IsType<LiquidString>(val.Value);
Assert.Equal(LiquidString.Create(guid.ToString("D")), val.Value);
}

enum TestEnum { One, Two, Three }
[Fact]
public void It_Should_Convert_Enum_To_LiquidString()
{
var testEnum = TestEnum.One;
var val = _converter.Convert(testEnum);

Assert.True(val.HasValue);
Assert.IsType<LiquidString>(val.Value);
Assert.Equal(LiquidString.Create(Enum.GetName(testEnum.GetType(), testEnum)), val.Value);
}

[Fact]
public void It_Should_Convert_Generic_List_To_Collection()
{
Expand Down
25 changes: 25 additions & 0 deletions Liquid.NET/src/Utils/LiquidValueConverter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,21 @@ private Option<ILiquidValue> FromPrimitive(Object obj)
var val = obj as IDictionary;
return CreateHash(val);
}

if (IsGuid(obj))
{
var val = obj as Guid?;
if (val.HasValue)
{
return LiquidString.Create(val.Value.ToString("D"));
}
}

if (IsEnum(obj))
{
return LiquidString.Create(Enum.GetName(obj.GetType(), obj));
}

return null;
}

Expand Down Expand Up @@ -172,6 +187,16 @@ private bool IsList(Object value)
return value is IList;
}

private bool IsGuid(Object value)
{
return value is Guid;
}

public bool IsEnum(Object value)
{
return value is Enum;
}

// http://stackoverflow.com/questions/1130698/checking-if-an-object-is-a-number-in-c-sharp#answer-1130705
private bool IsInt32Like(object value)
{
Expand Down