private void InitializeMoves()
        {
            List <IBar> upTrendBars = BarMocks.UpMove(5, 100.00);

            List <IBarDatum> upTrendBarData = upTrendBars.ToBarDatum().ToList();

            bars.AddRange(upTrendBarData);

            var moveAlpha = Move.Open(moves.Count, upTrendBarData.First(), 2)
                            .Close(upTrendBarData.Last());

            moves.Add(moveAlpha);

            IBarDatum last = moveAlpha.End;

            List <IBar> downTrend = BarMocks.DownMove(3, last.High - 10);

            List <IBarDatum> downData = downTrend.ToBarDatum().ToList();

            bars.AddRange(downData);

            var moveBeta = Move.Open(moves.Count, downData.First(), 3)
                           .Close(downData.Last());

            moves.Add(moveBeta);

            last = moveBeta.End;

            upTrendBars = BarMocks.UpMove(5, last.Low + 10);

            upTrendBarData = upTrendBars.ToBarDatum().ToList();

            bars.AddRange(upTrendBarData);

            var moveGamma = Move.Open(moves.Count, upTrendBarData.First(), 2)
                            .Close(upTrendBarData.Last());

            moves.Add(moveGamma);
        }
        public void WaveTest()
        {
            InitializeMoves();

            IBarDatum lastTrendBar = moves.Last().End;

            List <IBar> testBar = BarMocks.DownMove(1, lastTrendBar.High - 5);

            List <IBarDatum> testDatum = testBar.ToBarDatum().ToList();

            bars.ForEach(b => moveManager.Insert(b));

            var ir = moveManager.Highs.Where(b => b.High < testDatum.First().Low)
                     .Select(b => b.High).ToList();

            var lowBarQuery = moveManager.Lows.Where(b => b.Low < testDatum.First().Low)
                              .Select(b => b.Low).ToList();

            ir.AddRange(lowBarQuery);

            Assert.IsTrue(ir.Count == 2);
        }