public void When_no_filename()
        {
            var c = new FileLogEntryController(RunSameThreadInvoker.Invoke,
                                               (filename, parser) => new Watcher(),
                                               new InMemoryPersist());
            var entries = c.Entries.ToArray();

            Assert.Equal(0, entries.Count());
        }
        public OverviewWindow()
        {
            filec = new FileLogEntryController();

            Title        = string.Format("LogViewer  v.{0}", Assembly.GetExecutingAssembly().GetName().Version);
            this.Loaded += new RoutedEventHandler(OverviewWindow_Loaded);
            this.Closed += OverviewWindow_Closed;

            this.Icon = Imaging.CreateBitmapSourceFromHIcon(SystemIcons.Question.Handle, Int32Rect.Empty, null);

            InitializeComponent();
            this.DataContext       = filec;
            filec.FileNameChanged += ObservableFileName_PropertyChanged;
        }
        public OverviewWindow()
        {
            filec = new FileLogEntryController();

            Title = string.Format("LogViewer  v.{0}", Assembly.GetExecutingAssembly().GetName().Version);
            this.Loaded += new RoutedEventHandler(OverviewWindow_Loaded);
            this.Closed += OverviewWindow_Closed;

            this.Icon = Imaging.CreateBitmapSourceFromHIcon(SystemIcons.Question.Handle, Int32Rect.Empty, null);

            InitializeComponent();
            this.DataContext = filec;
            filec.FileNameChanged += ObservableFileName_PropertyChanged;
        }
        public void When_setting_filename_should_call_init_to_read()
        {
            var     init    = false;
            Watcher watcher = new Watcher()
            {
                OnInit = () => { init = true; },
            };
            var c = new FileLogEntryController(RunSameThreadInvoker.Invoke,
                                               (filename, parser) => watcher,
                                               new InMemoryPersist());

            c.FileName = "test";
            Assert.True(init);
            watcher.InvokeLogEntry(SampleLogEntry());
            Assert.Equal(1, c.Entries.Count());
        }
        public void When_getting_out_of_bounds_call_reset()
        {
            Watcher watcher = null;
            var     c       = new FileLogEntryController(RunSameThreadInvoker.Invoke,
                                                         (filename, parser) => watcher = new Watcher()
            {
                OnInit = () => { },
            },
                                                         new InMemoryPersist());

            c.FileName = "test";
            watcher.InvokeLogEntry(SampleLogEntry());
            watcher.OnInit = () => { throw new Exception(); };
            var onreset = false;

            watcher.OnReset = () => { onreset = true; };
            watcher.InvokeOutOfBounds();
            Assert.True(onreset);
            watcher.InvokeLogEntry(SampleLogEntry());
            Assert.Equal(1, c.Entries.Count());
        }
        public void When_setting_a_new_filename()
        {
            var     oninit   = 0;
            var     disposed = false;
            Watcher watcher  = null;
            var     c        = new FileLogEntryController(RunSameThreadInvoker.Invoke,
                                                          (filename, parser) =>
                                                          watcher = new Watcher()
            {
                OnInit    = () => { oninit++; },
                OnDispose = () => { disposed = true; }
            },
                                                          new InMemoryPersist());

            c.FileName = "test";
            watcher.InvokeLogEntry(SampleLogEntry());
            c.FileName = "test2";
            Assert.Equal(0, c.Entries.Count());
            watcher.InvokeLogEntry(SampleLogEntry());
            Assert.True(disposed);
            Assert.Equal(1, c.Entries.Count());
            Assert.Equal(2, oninit);
        }