Skip to content

Instantly share code, notes, and snippets.

@dgg
dgg / EqualityTrap.cs
Last active December 12, 2016 14:00
equality-implicit-nastysurprises
Money? fiver = 5m.Gbp();
MonetaryQuantity anotherFiver = (MonetaryQuantity)5m.Gbp();
Assert.That(EqualityComparer<Money?>.Default.Equals(fiver, anotherFiver), Is.True);
Assert.That(Nullable.Equals(fiver, anotherFiver), Is.True);
Assert.That(fiver.Equals(anotherFiver), Is.True); // fail!!!
@dgg
dgg / CompareConstructs.cs
Last active February 13, 2016 20:28
burned-by-laziness-again
// "proper"
foreach (var item in collection)
{
doSomething(item);
}
// compact
foreach (var item in collection) doSomething(item);
// more compact
collection.ForEach(item => doSomething(item));
// can't make it shorter
@dgg
dgg / MonetaryQuantity.cs
Last active January 29, 2016 18:51
a-new-nmoneys-member
public class MonetaryQuantity
{
[Obsolete("serialization only")]
private MonetaryQuantity() { }
public MonetaryQuantity(Money money)
{
Currency = money.CurrencyCode.AlphabeticCode();
Amount = money.Amount;
}
public string Currency { get; private set; }
@dgg
dgg / useComparer.cs
Created August 26, 2015 13:59
compacting-json.useComparer
Assert.That(somePropertJson, Is.EqualTo("{'prop'='value'}").AsJson());
@dgg
dgg / jsonContraint.cs
Created August 26, 2015 13:58
compacting-json.jsonContraint
Assert.That(someProperJson, Must.Be.Json("{'prop'='value'}"));
@dgg
dgg / directConstraint.cs
Created August 26, 2015 13:57
compacting-json.newConstraint
Assert.That(someProperJson, new JsonEqualConstraint("{'prop'='value'}"));
@dgg
dgg / jsonify.cs
Created August 26, 2015 13:56
compacting-json.jsonify
string json = "{'str' : 'value', 'number': 42}".Jsonify();
@dgg
dgg / newJsonString.cs
Created August 26, 2015 13:54
compacting-json.newJsonString.cs
var json = new JsonString("{'str' : 'value', 'number': 42}");
// use as a string
string nonCompact = json;
@dgg
dgg / inspiration.cs
Created August 26, 2015 13:53
compacting-json.inspiration
var order = new Order
{
// ..
};
var json = order.ToJson();
var expected = "{ 'Customer' : 'John', 'OrderDetails' : # }";
expected = expected.Replace("#", "[{ 'Product' : 'Pen', 'Quantity' : 1 }, { 'Product' : 'Ruler', 'Quantity' : 2 }]");
expected = expected.Replace("'", "\"");
Assert.AreEqual(expected, json);
@dgg
dgg / directConstraint.cs
Last active August 26, 2015 13:33
compacting-json
Assert.That(someProperJson, new JsonEqualConstraint("{'prop'='value'}"));