/// <summary>
 /// 按照时间顺序自动加入相关的Wcc中,或自动创建Wcc并加入到wccs中
 /// </summary>
 /// <param name="grDataPoint"></param>
 public void AddGrDataPoint(GrDataPoint grDataPoint)
 {
     if (_wccs.Count > 0)
     {
         // 已包含数据
         WastingCaloricCalculator lastwcc = _wccs[_wccs.Count - 1];
         if (lastwcc.IsTodayGrDataPoint(grDataPoint))
         {
             lastwcc.AddGrDataPoint(grDataPoint);
         }
         else if (lastwcc.IsNextDayDataPoint(grDataPoint))
         {
             if (lastwcc.CanCalcZeroDataPoint(grDataPoint))
             {
                 GrDataPoint zerogdp = lastwcc.CalcZeroDataPoint(grDataPoint);
                 lastwcc.AddGrDataPoint(zerogdp);
                 CreateAndAddNewWcc(zerogdp);
             }
             else
             {
                 CreateAndAddNewWcc(grDataPoint);
             }
         }
         else
         {
             CreateAndAddNewWcc(grDataPoint);
         }
     }
     else
     {
         CreateAndAddNewWcc(grDataPoint);
     }
 }
        /// <summary>
        ///
        /// </summary>
        /// <param name="grDataPoint"></param>
        private void CreateAndAddNewWcc(GrDataPoint grDataPoint)
        {
            WastingCaloricCalculator newwcc = new WastingCaloricCalculator(grDataPoint.DateTime);

            newwcc.AddGrDataPoint(grDataPoint);
            _wccs.Add(newwcc);
        }
        public void testCalcZeroDataPoint()
        {
            string      name = "name";
            GrDataPoint dp1  = new GrDataPoint(
                name,
                DateTime.Parse("2007-10-12 12:00:00"),
                100,
                50,
                1000
                );

            GrDataPoint dp2 = new GrDataPoint(
                name,
                DateTime.Parse("2007-10-13 11:59:59"),
                80,
                40,
                1200
                );

            WastingCaloricCalculator wcc = new WastingCaloricCalculator(DateTime.Parse("2007-10-12"));

            wcc.AddGrDataPoint(dp1);
            GrDataPoint ans = wcc.CalcZeroDataPoint(dp2);

            Assert.AreEqual(name, ans.StationName);
            Assert.AreEqual(DateTime.Parse("2007-10-13 0:0:0"), ans.DateTime);
            Assert.AreEqual(90F, ans.OneGiveTemp, 0.1F);
            Assert.AreEqual(45F, ans.OneBackTemp, 0.1F);
            Assert.AreEqual(1100F, ans.OneSum, 0.1F);


            Assert.AreEqual(true, wcc.CanCalcZeroDataPoint(dp2));
            Assert.AreEqual(false, wcc.IsTodayGrDataPoint(dp2));
            Assert.AreEqual(true, wcc.IsNextDayDataPoint(dp2));

            // 1 gr data point
            Assert.AreEqual(1, wcc.Calc());

            wcc.AddGrDataPoint(ans);
            Assert.AreEqual(1, wcc.Calc());
        }