Example #1
0
        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));
        }
Example #2
0
        public void Add()
        {
            var storage = new WireStorage(Integer.Int(123));

            storage.Add(Integer.Int(20));
            Assert.Equal(Integer.Int(143), storage.Wire);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        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);
            }
        }
Example #6
0
        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);
        }
Example #7
0
        public void Initial()
        {
            var storage = new WireStorage(Integer.Int(123));

            Assert.Equal(Integer.Int(123), storage.Wire);
        }
Example #8
0
        public void Add_Negative()
        {
            var storage = new WireStorage(Integer.Int(123));

            Assert.Throws <ArgumentException>(() => storage.Add(Integer.Int(-20)));
        }
Example #9
0
        public void TryTake_Negative()
        {
            var storage = new WireStorage(Integer.Int(123));

            Assert.Throws <ArgumentException>(() => storage.TryTake(Integer.Int(-20), out var _));
        }