Exemple #1
0
        public void ItemsChangedShouldFire(string[] setters)
        {
            PexAssume.IsNotNull(setters);
            PexAssume.AreElementsNotNull(setters);

            this.Log().InfoFormat("Setting TestString to [{0}]", String.Join(",", setters));

            (new TestScheduler()).With(sched => {
                var output_changed  = new List <object>();
                var output_changing = new List <object>();
                var fixture         = new ModelTestFixture();

                fixture.Changing.Subscribe(output_changing.Add);
                fixture.Changed.Subscribe(output_changed.Add);

                foreach (var v in setters)
                {
                    fixture.TestString = v;
                }

                sched.Start();

                PexAssert.AreEqual(setters.Uniq().Count(), output_changed.Count);
                PexAssert.AreEqual(setters.Uniq().Count(), output_changing.Count);
            });
        }
        public void AddingItemsShouldChangeTheContentHash(string[] toAdd)
        {
            PexAssume.IsNotNull(toAdd);
            PexAssume.AreElementsNotNull(toAdd);
            PexAssume.IsTrue(toAdd.Length > 0);

            (new TestScheduler()).With(sched => {
                var fixture     = new SerializedCollection <ModelTestFixture>();
                var hashes      = new List <Guid>();
                int changeCount = 0;

                fixture.Changed.Subscribe(_ => {
                    hashes.Add(fixture.ContentHash);
                    changeCount++;
                });

                foreach (var v in toAdd)
                {
                    fixture.Add(new ModelTestFixture()
                    {
                        TestString = v
                    });
                    sched.Start();
                }

                PexAssert.AreDistinctValues(hashes.ToArray());
                PexAssert.AreEqual(toAdd.Length, fixture.Count);
                PexAssert.AreEqual(toAdd.Uniq().Count(), changeCount);
            });
        }
Exemple #3
0
        public void TM([PexAssumeNotNull] String[] L0)
        {
            PexAssume.AreElementsNotNull(L0);
            PexAssume.AreDistinctValues(L0);
            PexAssume.IsTrue(L0.Length >= 3);

            Test51.L0p = Array.ConvertAll(L0, n => new Student(n));
            Test51.L0q = Array.ConvertAll(L0, n => new Student(n));

            ATracer.begin1();
            new T5V1.M().Main();
            ATracer.begin2();
            new T5V2.M().Main();

            Console.WriteLine(ATracer.trace1);
            Console.WriteLine("--------------");
            Console.WriteLine(ATracer.trace2);

            PexAssert.AreEqual(ATracer.trace1, ATracer.trace2);

            //ATrace.Begin();
            //PexAssert.AreBehaviorsEqual(() => new T5V1.M().Main(),
            //                            () => new T5V2.M().Main());
            //ATrace.End();
        }
Exemple #4
0
    public static object CreateDisembarkOrder(GameState.UnitIndex idx, HexTiling.HexCoords[] path)
    {
        PexAssume.IsNotNull(idx);
        PexAssume.IsNotNull(path);
        PexAssume.AreElementsNotNull(path);

        return(EmbarkOrders.DisembarkOrder.NewDisembark(idx, ListModule.OfArray(path)));
    }
    public static object CreateOrder(bool isBomb, bool isBombard, bool isConquer, bool isDirectAttack, bool isDockAt, bool isLandAt, HexTiling.HexCoords coords, HexTiling.HexCoords[] path)
    {
        PexAssume.IsNotNull(coords);
        PexAssume.IsNotNull(path);
        PexAssume.AreElementsNotNull(path);

        return
            (isBomb ? Orders.Order.NewBomb(coords, ListModule.OfArray(path)) :
             isBombard?Orders.Order.NewBombard(coords) :
                 isConquer?Orders.Order.NewConquer(ListModule.OfArray(path)) :
                     isDirectAttack?Orders.Order.NewDirectAttack(coords, ListModule.OfArray(path)) :
                         isDockAt?Orders.Order.NewDockAt(ListModule.OfArray(path)) :
                             isLandAt?Orders.Order.NewLandAt(ListModule.OfArray(path)) :
                                 Orders.Order.NewUnload(ListModule.OfArray(path), coords));
    }
Exemple #6
0
    public static object CreateUnitTypes(int t, bool isDocked, int fuel, Units.BomberTransport bt,
                                         Units.CarriedAircraft[] aircrafts, Units.TransportedUnit[] tu)
    {
        switch (t)
        {
        case 0: return(Units.UnitTypes.Infantry);

        case 1: return(Units.UnitTypes.AntiAircraft);

        case 2: return(Units.UnitTypes.Artillery);

        case 3: return(Units.UnitTypes.Tank);

        case 4: return(Units.UnitTypes.NewBattleship(isDocked ? Units.Docked.Docked : Units.Docked.NotDocked));

        case 5:
            PexAssume.IsNotNull(bt);
            return(Units.UnitTypes.NewBomber(isDocked ? Units.Landed.Landed : Units.Landed.Airborne,
                                             Units.Fuel.NewFuel(fuel), bt));

        case 6:
            PexAssume.IsNotNull(aircrafts);
            PexAssume.AreElementsNotNull(aircrafts);
            return(Units.UnitTypes.NewCarrier(isDocked ? Units.Docked.Docked : Units.Docked.NotDocked,
                                              aircrafts));

        case 7:
            return(Units.UnitTypes.NewDestroyer(isDocked ? Units.Docked.Docked : Units.Docked.NotDocked));

        case 8:
            return(Units.UnitTypes.NewFighter(isDocked ? Units.Landed.Landed : Units.Landed.Airborne,
                                              Units.Fuel.NewFuel(fuel)));

        case 9:
            return(Units.UnitTypes.NewSubmarine(isDocked ? Units.Docked.Docked : Units.Docked.NotDocked, Units.Stealthy.NotStealthy));

        case 10:
            return(Units.UnitTypes.NewSubmarine(isDocked ? Units.Docked.Docked : Units.Docked.NotDocked, Units.Stealthy.Stealthy));

        default:
            PexAssume.IsNotNull(tu);
            PexAssume.AreElementsNotNull(tu);
            return(Units.UnitTypes.NewTransport(isDocked ? Units.Docked.Docked : Units.Docked.NotDocked, tu));
        }
    }
Exemple #7
0
        public void TM([PexAssumeNotNull] String[] L0)
        {
            PexAssume.AreElementsNotNull(L0);
            PexAssume.AreDistinctValues(L0);
            PexAssume.IsTrue(L0.Length > 1);

            //String[] L1 = L0.UCopy().USort((a, b) => a.CompareTo(b));
            String[] L1 = L0.OrderBy(x => x).ToArray();
            //new String[L0.Length];
            //L0.UCopyTo(L1);
            //Array.Sort(L1);

            //PexAssert.AreElementsEqual(L0, L1);
            //System.Console.WriteLine(String.Join(",", L0));
            //System.Console.WriteLine("".Equals("\0"));
            //System.Console.WriteLine("\0".CompareTo("\0\0"));
            PexAssert.IsTrue(L0.SequenceEqual(L1));
        }
        public void Concat <T>(IEnumerable <IEnumerable <T> > source)
        {
            PexAssume.IsNotNull(source);
            PexAssume.AreElementsNotNull(source);

            var flattenedEnumerable = source.Concat();
            var flattenedEnumerator = flattenedEnumerable.GetEnumerator();

            foreach (var enumerable in source)
            {
                foreach (var value in enumerable)
                {
                    PexAssert.IsTrue(flattenedEnumerator.MoveNext());
                    PexAssert.AreEqual(flattenedEnumerator.Current, value);
                }
            }
            PexAssert.IsFalse(flattenedEnumerator.MoveNext());
        }
Exemple #9
0
        public void GuidsShouldBeUniqueForContent(string[] setters)
        {
            PexAssume.IsNotNull(setters);
            PexAssume.AreElementsNotNull(setters);

            (new TestScheduler()).With(sched => {
                var fixture = new ModelTestFixture();
                var output  = new Dictionary <string, Guid>();

                setters.ToObservable(sched).Subscribe(x => {
                    fixture.TestString = x;
                    output[x]          = fixture.ContentHash;
                });

                sched.Start();

                PexAssert.AreDistinctValues(output.Values.ToArray());
            });
        }
        public void Dematerialize <T>([PexAssumeNotNull] IEnumerable <Notification <T> > source)
        {
            PexAssume.AreElementsNotNull(source);

            var dispatched = source.Dematerialize();
            var enumerable = new StatefulEnumerable <T>(dispatched)
            {
                ShouldRethrow = false
            };
            var enumerator       = enumerable.GetEnumerator();
            var sourceEnumerator = source.GetEnumerator();

            while (sourceEnumerator.MoveNext())
            {
                var notification = sourceEnumerator.Current;
                var onNext       = notification as Notification <T> .OnNext;
                if (onNext != null)
                {
                    PexAssert.IsTrue(enumerator.MoveNext());
                    PexAssert.AreEqual(EnumerableState.MovedNext, enumerable.CurrentState);
                    PexAssert.AreEqual(onNext.Value, enumerator.Current);
                    PexAssert.AreEqual(EnumerableState.GotCurrent, enumerable.CurrentState);
                }
                else
                {
                    var onError = notification as Notification <T> .OnError;
                    if (onError != null)
                    {
                        PexAssert.IsFalse(enumerator.MoveNext());
                        PexAssert.AreEqual(EnumerableState.MovingNext | EnumerableState.Threw, enumerable.CurrentState);
                        PexAssert.AreEqual(onError.Exception, enumerable.Exception);
                        return;
                    }
                    var onCompleted = (Notification <T> .OnCompleted)notification;
                    PexAssert.IsFalse(enumerator.MoveNext());
                    PexAssert.AreEqual(EnumerableState.AtEnd, enumerable.CurrentState);
                    return;
                }
            }
            PexAssert.IsFalse(enumerator.MoveNext());
        }