public void Produce_WireShortage_LessThan1() { var wire = new WireStorage(Integer.Int(int.MaxValue)); var manager = new ClipperManager(1000); Integer min = Integer.Int(int.MaxValue); Integer max = Integer.Int(int.MinValue); Integer total = Integer.Zero; for (int i = 0; i < 1000; ++i) { if (i == 333) { wire.TryTake(wire.Wire, out var _); } else if (i == 666) { wire.Add(Integer.Int(int.MaxValue)); } var value = manager.ProduceClips(wire); total += value; min = Integer.Min(min, value); max = Integer.Max(max, value); } Assert.Equal(Integer.Int(0), min); Assert.Equal(Integer.Int(10), max); Assert.InRange(total, Integer.Int(6600), Integer.Int(6700)); }
public void Add() { var storage = new WireStorage(Integer.Int(123)); storage.Add(Integer.Int(20)); Assert.Equal(Integer.Int(143), storage.Wire); }
public void TryTake_Exact() { var storage = new WireStorage(Integer.Int(123)); Assert.True(storage.TryTake(Integer.Int(123), out var taken)); Assert.Equal(Integer.Int(123), taken); Assert.Equal(Integer.Int(0), storage.Wire); }
public void TryTake_Nothing() { var storage = new WireStorage(Integer.Int(0)); Assert.False(storage.TryTake(Integer.Int(125), out var taken)); Assert.Equal(taken, Integer.Int(0)); Assert.Equal(Integer.Int(0), storage.Wire); }
public void Produce_NoWire() { var wire = new WireStorage(Integer.Zero); var manager = new ClipperManager(1); for (int i = 0; i < (int)(10 / manager.ClipsPerTick); ++i) // Run long enough to produce 10 clips { var value = manager.ProduceClips(wire); Assert.Equal(Integer.Zero, value); } }
public void Produce_EnoughWire_MoreThan1() { var wire = new WireStorage(Integer.Int(int.MaxValue)); var manager = new ClipperManager(975); Integer min = Integer.Int(int.MaxValue); Integer max = Integer.Int(int.MinValue); Integer total = Integer.Zero; for (int i = 0; i < 1000; ++i) { var value = manager.ProduceClips(wire); total += value; min = Integer.Min(min, value); max = Integer.Max(max, value); } Assert.Equal(Integer.Int(9), min); Assert.Equal(Integer.Int(10), max); Assert.Equal(Integer.Int(9750), total); }
public void Initial() { var storage = new WireStorage(Integer.Int(123)); Assert.Equal(Integer.Int(123), storage.Wire); }
public void Add_Negative() { var storage = new WireStorage(Integer.Int(123)); Assert.Throws <ArgumentException>(() => storage.Add(Integer.Int(-20))); }
public void TryTake_Negative() { var storage = new WireStorage(Integer.Int(123)); Assert.Throws <ArgumentException>(() => storage.TryTake(Integer.Int(-20), out var _)); }