コード例 #1
0
ファイル: CsvData.cs プロジェクト: 1pindsvin/yagni
 private string AsCsvLine(Run run)
 {
     var e =
         new CsvLine
             {
                 Distance = run.Distance.ToString(),
                 Labels = LabelsToString(run.Labels),
                 LastChanged = ConvertDateTime(run.LastChanged),
                 RegisteredAt = ConvertDateTime(run.Start),
                 Shoe = ShoeAsString(run.Shoe),
                 Time = run.Time.ToString()
             };
     return e.AsCsvLine(Separator);
 }
コード例 #2
0
        public void ShouldSaveRun()
        {
            MemoryDataContext.Clear();
            var e = new RunDataAccess ();

            var athlete = new AthleteBuilder().Build();
            MemoryDataContext.Add(athlete);

            var run = new Run { ID = 0, Athlete = athlete};

            e.SaveRun(run);

            Assert.IsTrue(MemoryDataContext.IsCommited(run));
        }
コード例 #3
0
        public void AssertReturnsRunsForPlan()
        {
            var plan = new TrainingPlanBuilder().WithAthlete();
            for (var i = 0; i < 10; i++)
            {
                var run =
                    new Run {Distance = 1000, TrainingPlanID = plan.ID, Athlete = plan.Athlete};
                MemoryDataContext.InsertOnSubmit(run);
            }
            MemoryDataContext.Commit();
            var runDataAcces = new RunDataAccess();
            var runs = runDataAcces.GetPlannedRuns(plan);

            Assert.AreEqual(10, runs.Count);
        }
コード例 #4
0
 public Run Build()
 {
     var date = new DateTime(2010, 1, 30, 12, 25, 7);
     var shoe = new Shoe { Brand = "Nike" };
     var run = new Run
     {
         ID=1,
         Distance = 10000,
         Labels = (int)LabelEnumeration.None,
         LastChanged = date,
         Start = date,
         Shoe = shoe,
         Time = 10000
     };
     return run;
 }
コード例 #5
0
ファイル: CsvDataTester.cs プロジェクト: 1pindsvin/yagni
        public void AssertCanConvertRunToCsv()
        {
            var date = new DateTime(2010, 1, 30, 12, 25, 7);

            var shoe = new Shoe {Brand = "Nike"};

            var run = new Run
                          {
                              Distance = 10000,
                              Labels = (int) LabelEnumeration.None,
                              LastChanged = date,
                              Start = date,
                              Shoe = shoe,
                              Time = 10000
                          };

            var e = new CsvData();
            var content = e.AsFileContent(new[] {run});
            var expected = "Time\tDistance\tShoe\tRegisteredAt\tLastChanged\tLabels\r\n10000\t10000\tNike\t30-1-2010 12:25:07\t30-1-2010 12:25:07\t\r\n";
            Assert.AreEqual(expected,content);
        }
コード例 #6
0
ファイル: GetBestRunsTester.cs プロジェクト: 1pindsvin/yagni
 void InsertRuns(Athlete athlete)
 {
     for (int i = 0; i < 10; i++)
     {
         var run =
             new Run
                 {
                     Athlete = athlete,
                     Distance = i,
                     Start = _testRunStart,
                     Time = 1
                 };
         _testRunStart = _testRunStart.AddDays(7);
         MemoryDataContext.InsertOnSubmit(run);
     }
     MemoryDataContext.Commit();
 }
コード例 #7
0
ファイル: RunDataAccess.cs プロジェクト: 1pindsvin/yagni
 public Run UndoDeleteRun(Run run)
 {
     var deletedRun = _dataContext.Queryable<Run>().Single(x => x.ID == run.ID);
     var labels = (LabelEnumeration)deletedRun.Labels;
     labels ^= LabelEnumeration.Trash;
     deletedRun.Labels = (int)labels;
     deletedRun.LastChanged = run.LastChanged;
     _dataContext.Commit();
     return deletedRun;
 }
コード例 #8
0
ファイル: RunTester.cs プロジェクト: 1pindsvin/yagni
        private static void InsertAthleteRuns(Athlete athlete, int numberOfRunsToInsert)
        {
            var r = new RandomProvider();
            using (var db = new DbDataContext())
            {
                var timeMin = 1000;
                var timeMax = 10000;
                var distanceMin = 5000;
                var distanceMax = 12000;
                var dateMin = new DateTime(1920, 1, 1);
                var dateMax = new DateTime(2020, 1, 1);
                var runCountBefore = db.Runs.Count();

                const bool athleteModified = false;
                db.Athletes.Attach(athlete, athleteModified);

                var runs = new List<Run>();
                for (var i = 0; i < numberOfRunsToInsert; i++)
                {
                    var run = new Run
                                  {
                                      Athlete = athlete,
                                      Time = r.Next(timeMin, timeMax),
                                      Distance = r.Next(distanceMin, distanceMax),
                                      Start = r.Next(dateMin, dateMax)
                                  };
                    runs.Add(run);
                    if (runs.Count > 5000)
                    {
                        db.Runs.InsertAllOnSubmit(runs);
                        db.SubmitChanges();
                        runs.Clear();
                    }
                }
                if (runs.Count > 0)
                {
                    db.Runs.InsertAllOnSubmit(runs);
                    db.SubmitChanges();
                    runs.Clear();
                }
                var afterRunsInsertedCount = db.Runs.Count();
                Assert.AreEqual(runCountBefore, afterRunsInsertedCount - numberOfRunsToInsert);
            }
        }
コード例 #9
0
ファイル: Db.designer.cs プロジェクト: 1pindsvin/yagni
 partial void DeleteRun(Run instance);
コード例 #10
0
ファイル: RunDataAccess.cs プロジェクト: 1pindsvin/yagni
        public Run SaveRun(Run run)
        {
            try
            {
                _dataContext.RollbackAndAttach(run.Athlete);
                if (run.Shoe == null)
                {
                    run.ShoeID = new int?();
                }
                else
                {
                    _dataContext.RollbackAndAttach(run.Shoe);
                }
                if (run.ID > 0)
                {
                    _dataContext.UpdateAndAttach(run);
                }
                else
                {
                    _dataContext.InsertOnSubmit(run);
                }
                _dataContext.Commit();
            }
            catch (ChangeConflictException changeConflictException)
            {
                var message =
                    string.Format(
                        "Error, SaveRun, run ID = {0}, AthleteID = {1}, version [{2}], Fluorineversion [{3}]", run.ID,
                        run.AthleteID, run.Version, run.RtVersion);

                throw new ChangeConflictException(message, changeConflictException);
            }
            return run;
        }
コード例 #11
0
ファイル: Db.designer.cs プロジェクト: 1pindsvin/yagni
 partial void UpdateRun(Run instance);
コード例 #12
0
ファイル: Db.designer.cs プロジェクト: 1pindsvin/yagni
 partial void InsertRun(Run instance);
コード例 #13
0
 private void InsertPersistentRun(DateTime dateTime)
 {
     var e = new RunDataAccess();
     var run = new Run { ID = 0, Athlete = _athlete, Start = dateTime};
     e.SaveRun(run);
 }
コード例 #14
0
ファイル: DbDataContext.cs プロジェクト: 1pindsvin/yagni
partial         void DeleteRun(Run instance)
        {
            this.ExecuteDynamicDelete(instance);
        }
コード例 #15
0
ファイル: Trainer.cs プロジェクト: 1pindsvin/yagni
 private Run CreateRun(double distance, DateTime date)
 {
     var run = new Run
                   {
                       TrainingPlan = TrainingPlan,
                       Athlete = Athlete,
                       Distance = Convert.ToInt32(distance),
                       Start = date
                   };
     return run;
 }