Exemple #1
0
    static void Main()
    {
        // instantiate my facades
        TestFacade peterFacade   = new TestFacade(PersonChoice.Peter);
        TestFacade charlesFacade = new TestFacade(PersonChoice.Charles);
        TestFacade bothFacade    = new TestFacade(PersonChoice.Both);

        //      run some methods:
        // Peter
        string name = "Peter";
        int    age  = 15;

        writeProperties(peterFacade, name, age);

        // Charles
        name = "Charles";
        age  = 20;
        writeProperties(charlesFacade, name, age);

        // Both
        name = "Bothergate";
        age  = 234;
        writeProperties(bothFacade, name, age);

        // wait for user input.
        Console.ReadLine();
    }
Exemple #2
0
        public void WaitForOperatorThrowsTimeoutExceptionAfterTimeOut()
        {
            var scheduler = new TestFacade();

            var synced = new Synced <Exception>();

            async CTask Do()
            {
                var source    = new Source <int>();
                var waitedFor = source.WaitFor(5, true, TimeSpan.FromMilliseconds(500));

                try
                {
                    await waitedFor;
                }
                catch (Exception e)
                {
                    synced.Value = e;
                }
            }

            synced.Value.ShouldBeNull();

            scheduler.Schedule(() => _ = Do());

            var exception = synced.WaitFor(e => e != null);

            (exception is TimeoutException).ShouldBeTrue();

            scheduler.Dispose();
        }
        public void WaitForOperatorEmitsElementsThrowsExceptionDespiteRestart()
        {
            var facade = new TestFacade();

            var synced = new Synced <Exception>();

            facade.Schedule(() =>
            {
                var workflow = new WaitForWorkflow(1000);
                Sync.AfterNext(workflow.EmitEventsToSource, true);
                Sync.AfterNext(workflow.SetFieldVariableAfterWaitedFor, true);
            });

            Thread.Sleep(100);

            facade.PersistAndCloseDown();

            Thread.Sleep(100);

            facade.LoadAgain();

            Thread.Sleep(3000);

            synced.Value.ShouldBeNull();

            var thrownException = facade.Resolve <WaitForWorkflow>().ThrownException;

            (thrownException is TimeoutException).ShouldBeTrue();

            facade.Dispose();
        }
        /// <summary>
        /// Generates flight tickets randomly for each customer.
        /// </summary>
        public static IList <Ticket> GetRandomTickets(int ticketsPerCustomer)
        {
            TestFacade facade = new TestFacade();

            IList <Customer> customers = facade.GetAllCustomers();
            IList <Flight>   flights   = facade.GetAllFlights();

            IList <Ticket> tickets = new List <Ticket>();

            foreach (Customer customer in customers)
            {
                for (int i = 0; i < ticketsPerCustomer; i++)
                {
                    if (flights[i].DepartureTime < DateTime.Now.AddDays(-1))
                    {
                        continue;
                    }

                    Ticket ticket = new Ticket
                    {
                        CustomerId = customer.Id,
                        FlightId   = flights[i].Id
                    };
                    tickets.Add(ticket);
                }
            }

            return(tickets);
        }
        public async Task SimpleWaitForWithTimeoutTest()
        {
            var facade = new TestFacade();

            _ = facade.Schedule(() =>
            {
                var w = new SimpleWaitForWorkflow();
                Roots.Entangle(w);
                _ = w.Start();
            });

            await facade.Scheduler.Sync();

            var workflow = facade.Resolve <SimpleWaitForWorkflow>();

            workflow.ThrownException.ShouldBeNull();
            facade.LoadAgain();

            await Task.Delay(3000);

            workflow = facade.Resolve <SimpleWaitForWorkflow>();
            workflow.ThrownException.ShouldNotBeNull();

            facade.Dispose();
        }
        public void WaitForOperatorEmitsElementsBeforeTimeOutDespiteRestart()
        {
            var facade = new TestFacade();

            var synced = new Synced <WaitForWorkflow>();

            facade.Schedule(() =>
            {
                var workflow = new WaitForWorkflow(5000);

                Sync.AfterNext(workflow.EmitEventsToSource, true);
                Sync.AfterNext(workflow.SetFieldVariableAfterWaitedFor, true);
            });

            Thread.Sleep(100);

            facade.PersistAndCloseDown();

            Thread.Sleep(100);

            facade.LoadAgain();

            Thread.Sleep(3000);

            synced.Value.ShouldBeNull();

            var w = facade.Resolve <WaitForWorkflow>();

            w.Emits.ToArray().Length.ShouldBe(5);

            facade.Dispose();
        }
Exemple #7
0
 public TestController(TestFacade testFacade, TopicFacade topicFacade,
                       StudentGroupFacade studentGroupFacade, TestResultFacade testResultFacade)
 {
     this.testFacade         = testFacade;
     this.topicFacade        = topicFacade;
     this.studentGroupFacade = studentGroupFacade;
     this.testResultFacade   = testResultFacade;
 }
        private void InitializeDataCount()
        {
            Task.Run(() =>
            {
                TestFacade facade = new TestFacade();

                CustomersField.CurrentItemsNumber = facade.GetAllCustomers().Count;
                AirlinesField.CurrentItemsNumber  = facade.GetAllAirlineCompanies().Count;
                FlightsField.CurrentItemsNumber   = facade.GetAllFlights().Count;
                TicketsField.CurrentItemsNumber   = facade.GetAllTickets().Count;
            });
        }
        public ResponseData <object> DeleteTest(DeleteTest deleteTest)
        {
            ResponseData <object> response = new ResponseData <object>();


            TestFacade facade = new TestFacade();

            try
            {
                facade.Delete(deleteTest);
            }
            catch (Exception ex)
            {
                ExceptionHandlerFactory.Factory.GetResponseExceptionHandler(response).Handle(ex);
            }

            return(response);
        }
        public ResponseData <int> SaveTest(SaveTest saveTest)
        {
            ResponseData <int> response = new ResponseData <int>();

            TestFacade facade = new TestFacade();

            try
            {
                response.Data = facade.Save(saveTest);
            }

            catch (Exception ex)
            {
                ExceptionHandlerFactory.Factory.GetResponseExceptionHandler(response).Handle(ex);
            }

            return(response);
        }
Exemple #11
0
        public void WaitForOperatorEmitsElementsBeforeTimeOut()
        {
            var testFacade = new TestFacade();

            var synced = new Synced <Tuple <Exception, int[]> >();

            async CTask Do()
            {
                var source    = new Source <int>();
                var waitedFor = source.WaitFor(5, true, TimeSpan.FromMilliseconds(500));

                for (var i = 0; i < 5; i++)
                {
                    await Sleep.Until(10, false);

                    source.Emit(i);
                }

                try
                {
                    var elements = await waitedFor;
                    synced.Value = Tuple.Create(default(Exception), elements.ToArray());
                }
                catch (Exception e)
                {
                    synced.Value = Tuple.Create(e, default(int[]));
                }
            }

            synced.Value.ShouldBeNull();

            testFacade.Schedule(() => _ = Do());

            var(exception, elements) = synced.WaitFor(e => e != null);
            exception.ShouldBeNull();
            elements.Length.ShouldBe(5);
            for (var i = 0; i < 5; i++)
            {
                elements[i].ShouldBe(i);
            }
        }
Exemple #12
0
 static void writeProperties(TestFacade facade, string name, int age)
 {
     Console.WriteLine("Person name: {0} Last Name: {1} Age : {2} ", name, facade.ITester.NamePlusLastName(name), facade.ITester.AgePlus20(age));
 }
        /// <summary>
        /// Generates random flights for each airline company.
        /// Read the comment in the bottom of the file to understand its logics.
        /// </summary>
        public static IList <Flight> GetRandomFlights(int flightsPerAirline)
        {
            TestFacade facade = new TestFacade();

            // Getting all airline companies.
            IList <AirlineCompany> airlines = facade.GetAllAirlineCompanies();

            IList <Flight> flights = new List <Flight>();

            Random rnd = new Random();

            DateTime startDate;

            // Defining the initial time of the flights generation.
            DateTime sDate = DateTime.Now.AddDays(-1);

            startDate = new DateTime(sDate.Year, sDate.Month, sDate.Day, sDate.Hour, 0, 0);

            foreach (AirlineCompany airline in airlines)
            {
                for (int i = 0; i < flightsPerAirline; i++)
                {
                    Flight flight = new Flight();
                    flight.AirlineCompanyId = airline.Id;

                    // Choosing random countries
                    if (i % 2 == 0)
                    {
                        flight.OriginCountryCode = airline.CountryCode;
                        do
                        {
                            flight.DestinationCountryCode = rnd.Next(1, 15);
                        }while (flight.DestinationCountryCode == flight.OriginCountryCode);
                    }
                    else
                    {
                        flight.DestinationCountryCode = airline.CountryCode;
                        do
                        {
                            flight.OriginCountryCode = rnd.Next(1, 15);
                        }while (flight.DestinationCountryCode == flight.OriginCountryCode);
                    }

                    // Generating flight schedule:

                    flight.DepartureTime = startDate.AddMinutes(i * 60);

                    int flightTime = GetFlightDuration(flight.OriginCountryCode, flight.DestinationCountryCode);

                    flight.LandingTime = flight.DepartureTime.AddHours(flightTime);

                    if (rnd.Next(1, 3) == 1)
                    {
                        if (rnd.Next(1, 3) == 1)
                        {
                            flight.LandingTime = flight.LandingTime.AddMinutes(30);
                        }
                        else
                        {
                            flight.LandingTime = flight.LandingTime.AddMinutes(-30);
                        }
                    }

                    // Generating tickets number and ticket price:

                    flight.RemainingTickets = rnd.Next(10, 150);

                    flight.TicketPrice = flightTime * 50 - 1;

                    flights.Add(flight);
                }
            }

            return(flights);
        }
 // Use this for initialization
 void Start()
 {
     TestFacade t = new TestFacade(gameObject);
 }
        /// <summary>
        /// Generating and adding the data to the database.
        /// </summary>
        private void AddItemsToDatabase()
        {
            TestFacade facade = new TestFacade();

            int customersSum = CustomersField.CurrentItemsNumber + CustomersField.ItemsNum;
            int airlinesSum  = AirlinesField.CurrentItemsNumber + AirlinesField.ItemsNum;
            int flightsSum   = FlightsField.CurrentItemsNumber + FlightsField.ItemsNum;
            int ticketsSum   = TicketsField.CurrentItemsNumber + TicketsField.ItemsNum;

            if (airlinesSum * flightsSum < TicketsField.ItemsNum)
            {
                OnErrorOccured($"Total number of flights ({airlinesSum * flightsSum}) cannot be smaller than tickets per customer number ({TicketsField.ItemsNum}).");
                return;
            }
            else if (customersSum == 0 && TicketsField.ItemsNum > 0)
            {
                OnErrorOccured($"Cannot add tickets while there are no customers.");
                return;
            }

            else if (airlinesSum == 0 && FlightsField.ItemsNum > 0)
            {
                OnErrorOccured($"Cannot add flights while there are no airline companies.");
                return;
            }

            Task.Run(() =>
            {
                IsProccessing = true;

                ProccessingMessageAnimation();

                int totalItems = CustomersField.ItemsNum + AirlinesField.ItemsNum + FlightsField.ItemsNum * AirlinesField.ItemsNum +
                                 CustomersField.ItemsNum * TicketsField.ItemsNum;
                int succeeded = 0;

                if (DeleteDBFirst)
                {
                    facade.DeleteAllTables();
                    Log += $"Removed all items from the database.\n";
                }

                try
                {
                    IList <Customer> customers = DataGenerator.GetRandomCustomersList(CustomersField.ItemsNum);

                    if (CustomersField.ItemsNum > 0)
                    {
                        facade.AddRangeOfCustomers(customers);
                        Log       += $"Added {CustomersField.ItemsNum} customers to the database.\n";
                        succeeded += CustomersField.ItemsNum;
                        CustomersField.CurrentItemsNumber += CustomersField.ItemsNum;
                    }
                }
                catch (Exception e)
                {
                    Log += $"An error has occurred while adding customers to the database. Exception: {e.Message}\n";
                }

                try
                {
                    IList <AirlineCompany> airlines = DataGenerator.GetRandomAirlineCompaniesList(AirlinesField.ItemsNum);
                    if (AirlinesField.ItemsNum > 0)
                    {
                        facade.AddRangeOfAirlineCompanies(airlines);
                        Log       += $"Added {AirlinesField.ItemsNum} airline companies to database.\n";
                        succeeded += AirlinesField.ItemsNum;
                        AirlinesField.CurrentItemsNumber += AirlinesField.ItemsNum;
                    }
                }
                catch (Exception e)
                {
                    Log += $"An error has occurred while adding airline companies to the database. Exception: {e.Message}\n";
                }

                try
                {
                    IList <Flight> flights = DataGenerator.GetRandomFlights(FlightsField.ItemsNum);
                    if (FlightsField.ItemsNum > 0)
                    {
                        facade.AddRangeOfFlights(flights);
                        Log       += $"Added {FlightsField.ItemsNum} flights for each airline company to the database (Total: {FlightsField.ItemsNum * airlinesSum}).\n";
                        succeeded += FlightsField.ItemsNum * AirlinesField.ItemsNum;
                        FlightsField.CurrentItemsNumber += FlightsField.ItemsNum;
                    }
                }
                catch (Exception e)
                {
                    Log += $"An error has occurred while adding flights to the database. Exception: {e.Message} # {e.InnerException.Message} # {e.InnerException.InnerException.Message}\n";
                }

                try
                {
                    IList <Ticket> tickets = DataGenerator.GetRandomTickets(TicketsField.ItemsNum);
                    if (TicketsField.ItemsNum > 0)
                    {
                        facade.AddRangeOfTickets(tickets);
                        Log       += $"Added {TicketsField.ItemsNum} tickets for each customer to the database (Total: {TicketsField.ItemsNum * customersSum}).\n";
                        succeeded += TicketsField.ItemsNum * CustomersField.ItemsNum;
                        TicketsField.CurrentItemsNumber += TicketsField.ItemsNum;
                    }
                }
                catch (Exception e)
                {
                    Log += $"An error has occurred while adding tickets to the database. Exception: {e.Message}\n";
                }

                if (succeeded == totalItems && succeeded > 0)
                {
                    Log += $"** Added successfully {succeeded} items to the database! (100% success). **\n";
                }
                else if (totalItems > 0)
                {
                    Log += $"** Added {succeeded} out of {totalItems} items to the database ({(succeeded / totalItems) * 100}% success). **\n";
                }
                else
                {
                    Log += "No items has been added to the database.\n";
                }

                IsProccessing = false;
            });
        }
 protected override void OnInitialize()
 {
     _facade = new TestFacade();
     _facade.StateChanged += OnFacadeActivated;
 }