예제 #1
0
        public void Add_several_flights_to_database(int id)
        {
            var options = new DbContextOptionsBuilder <FlyingContext>()
                          .UseInMemoryDatabase(databaseName: "Add_select_several_database")
                          .Options;

            // Run the test against one instance of the context
            using (var context = new FlyingContext(options))
            {
                // Create a new flight
                var flight = new Flight();
                flight.FlightId             = id;
                flight.DepartureName        = "Ronald Reagan Washington National Airport" + id;
                flight.DepartureLatitude    = 38.8521d + id;
                flight.DepartureLongitude   = -77.037697d + id;
                flight.DestinationName      = "Ken Jones Airport" + id;
                flight.DestinationLatitude  = 18.1987991333d + id;
                flight.DestinationLongitude = -76.53450012210001d + id;
                flight.FuelConsumption      = 1.26d + id;
                flight.TakeoffEffort        = 1.001d + id;
                flight.Speed      = 500 + id;
                flight.FuelAmount = 999 + id;
                flight.FlightTime = TimeSpan.FromMinutes(999 + id);
                flight.Distance   = 999 + id;

                // Save the flight in the data base
                context.Add(flight);
                context.SaveChangesAsync();
            }
        }
예제 #2
0
        public async Task <IActionResult> Create([Bind("FlightId,DepartureName,DepartureLatitude,DepartureLongitude,DestinationName,DestinationLatitude,DestinationLongitude,FuelAmount,FuelConsumption,FlightTime,TakeoffEffort,Distance,Speed")] Flight flight)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    // Calculate the distance from the departure airport to the arrival airport
                    double lat    = flight.DepartureLatitude;
                    double lon    = flight.DepartureLongitude;
                    var    sCoord = new GeoCoordinate(lat, lon);
                    lat = flight.DestinationLatitude;
                    lon = flight.DestinationLongitude;
                    var    eCoord   = new GeoCoordinate(lat, lon);
                    double distance = sCoord.GetDistanceTo(eCoord) / 1000;
                    flight.Distance = (int)distance;

                    double consumption   = flight.FuelConsumption;
                    double takeoffEffort = flight.TakeoffEffort;

                    // Calculate flight time and fuel amount
                    flight.FuelAmount = (int)(consumption * distance + takeoffEffort);
                    flight.FlightTime = TimeSpan.FromMinutes(Math.Round((distance / flight.Speed) * 60));

                    // Save flight entity in database
                    _context.Add(flight);
                    await _context.SaveChangesAsync();

                    return(RedirectToAction(nameof(Index)));
                }
                catch
                {
                    return(View("Create", flight));
                }
            }
            return(View("Create", flight));
        }
예제 #3
0
        public void Add_writes_modify_in_database()
        {
            var options = new DbContextOptionsBuilder <FlyingContext>()
                          .UseInMemoryDatabase(databaseName: "Add_writes_modify_database")
                          .Options;

            // Run the test against one instance of the context
            using (var context = new FlyingContext(options))
            {
                // Create a new flight
                var flight = new Flight();
                flight.FlightId             = 999;
                flight.DepartureName        = "Ronald Reagan Washington National Airport";
                flight.DepartureLatitude    = 38.8521d;
                flight.DepartureLongitude   = -77.037697d;
                flight.DestinationName      = "Ken Jones Airport";
                flight.DestinationLatitude  = 18.1987991333d;
                flight.DestinationLongitude = -76.53450012210001d;
                flight.FuelConsumption      = 1.26d;
                flight.TakeoffEffort        = 1.001d;
                flight.Speed      = 500;
                flight.FuelAmount = 999;
                flight.FlightTime = TimeSpan.FromMinutes(999);
                flight.Distance   = 999;

                // Save the flight in the data base
                context.Add(flight);
                context.SaveChangesAsync();
            }

            // Use a separate instance of the context to verify correct data was saved
            using (var context = new FlyingContext(options))
            {
                Assert.AreEqual(1, context.Flights.Count());
                Assert.AreEqual(999, context.Flights.Single().FlightId);
                Assert.AreEqual("Ronald Reagan Washington National Airport", context.Flights.Single().DepartureName);
                Assert.AreEqual(38.8521d, context.Flights.Single().DepartureLatitude);
                Assert.AreEqual(-77.037697d, context.Flights.Single().DepartureLongitude);
                Assert.AreEqual("Ken Jones Airport", context.Flights.Single().DestinationName);
                Assert.AreEqual(18.1987991333d, context.Flights.Single().DestinationLatitude);
                Assert.AreEqual(-76.53450012210001d, context.Flights.Single().DestinationLongitude);
                Assert.AreEqual(1.26d, context.Flights.Single().FuelConsumption);
                Assert.AreEqual(1.001d, context.Flights.Single().TakeoffEffort);
                Assert.AreEqual(500, context.Flights.Single().Speed);
                Assert.AreEqual(999, context.Flights.Single().FuelAmount);
                Assert.AreEqual(TimeSpan.FromMinutes(999), context.Flights.Single().FlightTime);
                Assert.AreEqual(999, context.Flights.Single().Distance);
            }

            // Modify some fields, unmodified fields must keep their old values
            using (var context = new FlyingContext(options))
            {
                var flight = context.Flights.Find(999);
                Assert.AreNotEqual(null, flight);
                flight.DepartureName   = "+Ronald Reagan Washington National Airport+";
                flight.DestinationName = "+Ken Jones Airport+";
                flight.FuelAmount      = 888;

                // Save flight entity in database
                context.Update(flight);
                context.SaveChangesAsync();
            }

            // Use a separate instance of the context to verify correct data was saved
            using (var context = new FlyingContext(options))
            {
                Assert.AreEqual(1, context.Flights.Count());
                Assert.AreEqual(999, context.Flights.Single().FlightId);
                Assert.AreEqual("+Ronald Reagan Washington National Airport+", context.Flights.Single().DepartureName);
                Assert.AreEqual(38.8521d, context.Flights.Single().DepartureLatitude);
                Assert.AreEqual(-77.037697d, context.Flights.Single().DepartureLongitude);
                Assert.AreEqual("+Ken Jones Airport+", context.Flights.Single().DestinationName);
                Assert.AreEqual(18.1987991333d, context.Flights.Single().DestinationLatitude);
                Assert.AreEqual(-76.53450012210001d, context.Flights.Single().DestinationLongitude);
                Assert.AreEqual(1.26d, context.Flights.Single().FuelConsumption);
                Assert.AreEqual(1.001d, context.Flights.Single().TakeoffEffort);
                Assert.AreEqual(500, context.Flights.Single().Speed);
                Assert.AreEqual(888, context.Flights.Single().FuelAmount);
                Assert.AreEqual(TimeSpan.FromMinutes(999), context.Flights.Single().FlightTime);
                Assert.AreEqual(999, context.Flights.Single().Distance);
            }
        }