internal static void Main()
        {
            var eventManager = new EventsManagerFast();
            var commandParser = new CommandParser();
            var printer = new StringBuilderPrinter();
            var commandFactory = new CommandFactory(eventManager, printer);
            var consolePrinter = new ConsolePrinterVisitor();

            while (true)
            {
                string userLine = Console.ReadLine();
                if (userLine == "End" || userLine == null)
                {
                    break;
                }

                try
                {
                    var commandInfo = commandParser.Parse(userLine);
                    var command = commandFactory.Create(commandInfo);
                    command.Execute(commandInfo.Arguments);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }

            printer.Accept(consolePrinter);
        }
예제 #2
0
        public void TestDeleteEventsByTitle_WhenNoEevntsAreAdded()
        {
            EventsManagerFast eventsManager = new EventsManagerFast();
            int numberOfDeletedEvents = eventsManager.DeleteEventsByTitle("Title");

            Assert.AreEqual(0, numberOfDeletedEvents);
        }
        internal static void Main()
        {
            var eventsManager = new EventsManagerFast();
            var commandExecutor = new CommandExecutor(eventsManager);
            StringBuilder resultOutput = new StringBuilder();

            while (true)
            {
                string inputLine = Console.ReadLine();
                if (inputLine == "End" || inputLine == null)
                {
                    break;
                }

                try
                {
                    Command parsedCommand = Command.Parse(inputLine);
                    string outputCommandResult = commandExecutor.ProcessCommand(parsedCommand);
                    resultOutput.AppendLine(outputCommandResult);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }

            Console.WriteLine(resultOutput);
        }
        public static void Main()
        {
            // first bottleneck - it is better to use the multidictionary (EventManagerFast) since removing a lot of elements in list is slow operation
            EventsManagerFast eventsManager    = new EventsManagerFast();
            CommandProcessor  commandProcessor = new CommandProcessor(eventsManager);

            while (true)
            {
                string command = Console.ReadLine();

                if (command == "End" || command == null)
                {
                    break;
                }

                try
                {
                    Console.WriteLine(commandProcessor.ProcessCommand(Command.Parse(command)));
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
        }
        internal static void Main()
        {
            var           eventsManager   = new EventsManagerFast();
            var           commandExecutor = new CommandExecutor(eventsManager);
            StringBuilder resultOutput    = new StringBuilder();

            while (true)
            {
                string inputLine = Console.ReadLine();
                if (inputLine == "End" || inputLine == null)
                {
                    break;
                }

                try
                {
                    Command parsedCommand       = Command.Parse(inputLine);
                    string  outputCommandResult = commandExecutor.ProcessCommand(parsedCommand);
                    resultOutput.AppendLine(outputCommandResult);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }

            Console.WriteLine(resultOutput);
        }
예제 #6
0
        /// <summary>
        /// Entry point of the application
        /// </summary>
        internal static void Main()
        {
            var eventsManager = new EventsManagerFast();
            var processor     = new CommandProcessor(eventsManager);
            var output        = new StringBuilder();

            while (true)
            {
                string commandText = Console.ReadLine();
                if (commandText == EndCommandString || commandText == null)
                {
                    // The sequence of commands is finished
                    break;
                }

                try
                {
                    var command = Command.Parse(commandText);
                    var result  = processor.ProcessCommand(command);
                    output.AppendLine(result);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    break;
                }
            }

            Console.WriteLine(output);
        }
예제 #7
0
        /// <summary>
        /// Entry point of the application
        /// </summary>
        internal static void Main()
        {
            var eventsManager = new EventsManagerFast();
            var processor = new CommandProcessor(eventsManager);
            var output = new StringBuilder();

            while (true)
            {
                string commandText = Console.ReadLine();
                if (commandText == EndCommandString || commandText == null)
                {
                    // The sequence of commands is finished
                    break;
                }

                try
                {
                    var command = Command.Parse(commandText);
                    var result = processor.ProcessCommand(command);
                    output.AppendLine(result);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    break;
                }
            }

            Console.WriteLine(output);
        }
        public static void Main()
        {
            //Use EventManagerFast because bottleneck is in EventManager
            var eventManager = new EventsManagerFast();
            var eventExecutor = new EventExecutor(eventManager);
            StringBuilder result = new StringBuilder();

            while (true)
            {
                string command = Console.ReadLine();
                if (command == "End" || command == null)
                {
                    Console.WriteLine(result.ToString());
                    break;
                }

                try
                {
                    var parsedCommand = Command.Parse(command);
                    var resultOfCommand = eventExecutor.ProcessCommand(parsedCommand);
                    result.AppendLine(resultOfCommand);
                }
                catch (ArgumentException ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
        }
 public void DeleteEventsWithGivenTitle()
 {
     IEventsManager eventsManager = new EventsManagerFast();
     eventsManager.AddEvent(sampleEvent);
     eventsManager.DeleteEventsByTitle(sampleEvent.Title);
     Assert.AreEqual(0, eventsManager.ListEvents(DateTime.MinValue, int.MaxValue).Count());
 }
        public void TestAddMultipleSameDateEvents()
        {
            EventsManagerFast eventManager = new EventsManagerFast();

            Event ev = new Event();
            ev.Title = "Rock party - 407026";
            ev.Date = DateTime.ParseExact("2001-01-01T08:30:03", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
            ev.Location = "home - 681328";
            eventManager.AddEvent(ev);

            Event ev2 = new Event();
            ev2.Title = "Chalga party";
            ev2.Date = DateTime.ParseExact("2001-01-01T08:30:03", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
            ev2.Location = "- 235165";
            eventManager.AddEvent(ev2);

            Event ev3 = new Event();
            ev3.Title = "Party LORA";
            ev3.Date = DateTime.ParseExact("2001-01-01T08:30:03", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
            ev3.Location = "at school - 4795";
            eventManager.AddEvent(ev3);

            Assert.AreEqual(1, eventManager.EventsByDateCount);
            Assert.AreEqual(3, eventManager.EventsByTitleCount);
        }
 public void DeleteEventsByCaseInsensitiveTitle()
 {
     IEventsManager eventsManager = new EventsManagerFast();
     eventsManager.AddEvent(new Event { Date = DateTime.Now, Location = "Telerik Academy", Title = "High-Quality Code Exam", });
     eventsManager.AddEvent(new Event { Date = DateTime.Now, Location = "Telerik Academy", Title = "HIGH-Quality CODE Exam", });
     eventsManager.DeleteEventsByTitle("HIGH-Quality CODE Exam".ToLower());
     Assert.AreEqual(0, eventsManager.ListEvents(DateTime.MinValue, int.MaxValue).Count());
 }
 public void AddDuplicateEvents()
 {
     IEventsManager eventsManager = new EventsManagerFast();
     eventsManager.AddEvent(sampleEvent);
     eventsManager.AddEvent(sampleEvent);
     eventsManager.AddEvent(sampleEvent);
     Assert.AreEqual(3, eventsManager.ListEvents(DateTime.MinValue, int.MaxValue).Count());
 }
        public void DeleteElementsInEmptyList()
        {
            EventsManagerFast fastManager = new EventsManagerFast();

            int expected = fastManager.DeleteEventsByTitle("Party 1");
            int actual = 0;

            Assert.AreEqual(expected, actual);
        }
        public void AddDuplicatedEvent()
        {
            EventsManagerFast fastManager = new EventsManagerFast();

            var date = DateTime.ParseExact("2012-01-21T20:00:00", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
            Event firstEvent = new Event(date, "Party 3", "Sofia");
            fastManager.AddEvent(firstEvent);
            fastManager.AddEvent(firstEvent);

            Assert.AreEqual(2, fastManager.Count);
        }
        public void TestAddSingleEvent()
        {
            EventsManagerFast eventManager = new EventsManagerFast();
            Event ev = new Event();
            ev.Title = "Rock party - 407026";
            ev.Date = DateTime.ParseExact("2012-03-31T23:59:57", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
            ev.Location = "home - 681328";
            eventManager.AddEvent(ev);

            Assert.AreEqual(1, eventManager.EventsByTitleCount);
        }
        public void TestAddEvent_When3EventsAdded()
        {
            EventsManagerFast manager = new EventsManagerFast();
            //first event
            string titleCSharp = "C# exam";
            var dateCSharp = DateTime.ParseExact(
                "2012-03-26T09:00:00", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
            string locationCSharp = "Home";
            
            var evCSharp1 = new Event
            {
                date = dateCSharp,
                Title = titleCSharp,
                Location = locationCSharp,
            };

            manager.AddEvent(evCSharp1);

            //second event
            string title = "C++ exam";
            var dateCPlus = DateTime.ParseExact(
                "2011-02-26T09:00:00", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
            string locationCPlus = "Academy";

            var evCPlus = new Event
            {
                date = dateCPlus,
                Title = title,
                Location = locationCPlus,
            };

            //third event
            string titleCSharp2 = "C# exam";
            var dateCSharp2 = DateTime.ParseExact(
                "2012-03-26T09:00:00", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
            string locationCSharp2 = "Home";

            var evCSharp2 = new Event
            {
                date = dateCSharp2,
                Title = titleCSharp2,
                Location = locationCSharp2,
            };

            manager.AddEvent(evCSharp2);


            var result = manager.ListEvents(dateCSharp, 2);
            int actual = result.Count();

            Assert.AreEqual(2, actual);
        }
예제 #17
0
        public void TestDeleteEventsByTitle_WhenMultipleEventsAreAddedAndNoneOfThemMatch()
        {
            EventsManagerFast eventsManager = new EventsManagerFast();
            int totalNumberOfEvents = 10;
            for (int i = 0; i < totalNumberOfEvents; i++)
            {
                eventsManager.AddEvent(new Event(DateTime.Now, "Title"));
            }

            int numberOfDeletedEvents = eventsManager.DeleteEventsByTitle("Title1");

            Assert.AreEqual(0, numberOfDeletedEvents);
        }
        public void Add5000Events()
        {
            EventsManagerFast fastManager = new EventsManagerFast();
            var date = DateTime.ParseExact("2012-01-21T20:00:00", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);

            for (int i = 0; i < 5000; i++)
            {
                Event newEvent = new Event(date, "Party " + i, "Sofia");
                fastManager.AddEvent(newEvent);
            }

            Assert.AreEqual(5000, fastManager.Count);
        }
예제 #19
0
        public void TestDeleteEventsByTitle_WhenMultipleEventsAreAddedAndOnlyOneMatches()
        {
            EventsManagerFast eventsManager = new EventsManagerFast();
            for (int i = 0; i < 10; i++)
            {
                eventsManager.AddEvent(new Event(DateTime.Now, "Title"));
            }

            eventsManager.AddEvent(new Event(DateTime.Now, "Title1"));
            int numberOfDeletedEvents = eventsManager.DeleteEventsByTitle("Title1");

            Assert.AreEqual(1, numberOfDeletedEvents);
        }
예제 #20
0
        public void TestDeleteEventsByTitle_WhenMultipleEventsAreAddedAndSomeOfThemMatch()
        {
            EventsManagerFast eventsManager = new EventsManagerFast();
            int totalNumberOfEvents = 10;
            for (int i = 0; i < totalNumberOfEvents; i++)
            {
                string titleIndex = (i % 2).ToString();
                eventsManager.AddEvent(new Event(DateTime.Now, "Title" + titleIndex));
            }

            int numberOfDeletedEvents = eventsManager.DeleteEventsByTitle("Title0");

            Assert.AreEqual(totalNumberOfEvents / 2, numberOfDeletedEvents);
        }
        public void AddEventEmptyAndNullLocationTest()
        {
            EventsManagerFast fastManager = new EventsManagerFast();

            var firstDate = DateTime.ParseExact("2012-01-21T20:00:00", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
            var secondDate = DateTime.ParseExact("2012-05-21T20:00:00", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
            var thirdDate = DateTime.ParseExact("2012-09-21T20:00:00", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
            Event firstEvent = new Event(firstDate, "Party 1"); // empty location
            Event secondEvent = new Event(secondDate, "Party 2", null); // null location
            Event thirdEvent = new Event(thirdDate, "Party 3", "Sofia");

            fastManager.AddEvent(firstEvent);
            fastManager.AddEvent(secondEvent);
            fastManager.AddEvent(thirdEvent);
            Assert.AreEqual(3, fastManager.Count);
        }
        public void AddEventTest()
        {
            EventsManagerFast fastManager = new EventsManagerFast();

            var firstDate = DateTime.ParseExact("2012-01-21T20:00:00", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
            var secondDate = DateTime.ParseExact("2012-05-21T20:00:00", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
            var thirdDate = DateTime.ParseExact("2012-09-21T20:00:00", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);

            Event firstEvent = new Event(firstDate, "Party 1", "Sofia");
            Event secondEvent = new Event(secondDate, "Party 2", "Burgas");
            Event thirdEvent = new Event(thirdDate, "Party 3", "Varna");

            fastManager.AddEvent(firstEvent);
            fastManager.AddEvent(secondEvent);
            fastManager.AddEvent(thirdEvent);
            Assert.AreEqual(3, fastManager.Count);
        }
예제 #23
0
        public static void Main()
        {
            var eventManager           = new EventsManager();
            var eventManagerFast       = new EventsManagerFast();
            var calendarEventProcessor = new CalendarEventProcessor(eventManagerFast);

            while (true)
            {
                string inputLine = Console.ReadLine();
                if (inputLine == "End" || inputLine == null)
                {
                    break;
                }

                var processedCommand = calendarEventProcessor.ProcessCommand(Command.Parse(inputLine));
                Console.WriteLine(processedCommand);
            }
        }
        public void TestAddEvent_When1EventAdded()
        {
            var date = DateTime.ParseExact(
                "2012-03-26T09:00:00", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
            string title = "C# exam";
            var ev = new Event
                {
                    date = date,
                    Title = title,
                    Location = null,
                };

            EventsManagerFast manager = new EventsManagerFast();
            manager.AddEvent(ev);
            var result = manager.ListEvents(date, 1);
            int actual = result.Count();

            Assert.AreEqual(1, actual);
        }
예제 #25
0
        public static void Main()
        {
            // Console.SetIn(new StreamReader("../../../CalendarSystem.Tests/Tests/test.010.in.txt"));
            // Console.SetIn(new StreamReader("../../input.txt"));

            // IEventsManager eventsManager = new EventsManager();
            IEventsManager eventsManager = new EventsManagerFast();

            CommandExecutor commandExecutor = new CommandExecutor(eventsManager);
            StringBuilder output = new StringBuilder();

            for (string line = null; (line = ReadCommand()) != "End"; )
            {
                Command command = Command.Parse(line);
                string result = commandExecutor.ProcessCommand(command);
                output.AppendLine(result);
                // Console.WriteLine(result);
            }

            Console.Write(output);
        }
예제 #26
0
        public static void Main()
        {
            // Console.SetIn(new StreamReader("../../../CalendarSystem.Tests/Tests/test.010.in.txt"));
            // Console.SetIn(new StreamReader("../../input.txt"));

            // IEventsManager eventsManager = new EventsManager();
            IEventsManager eventsManager = new EventsManagerFast();

            CommandExecutor commandExecutor = new CommandExecutor(eventsManager);
            StringBuilder   output          = new StringBuilder();

            for (string line = null; (line = ReadCommand()) != "End";)
            {
                Command command = Command.Parse(line);
                string  result  = commandExecutor.ProcessCommand(command);
                output.AppendLine(result);
                // Console.WriteLine(result);
            }

            Console.Write(output);
        }
예제 #27
0
        internal static void Main()
        {
            var eventsManager   = new EventsManagerFast();
            var commandExecutor = new CommandExecutor(eventsManager);

            bool shouldReadCommands = true;

            while (shouldReadCommands)
            {
                string command = Console.ReadLine();
                if (command == "End" || string.IsNullOrEmpty(command))
                {
                    shouldReadCommands = false;
                }
                else
                {
                    Command parsedCommand = Command.Parse(command);
                    string  commandResult = commandExecutor.ProcessCommand(parsedCommand);
                    Console.WriteLine(commandResult);
                }
            }
        }
예제 #28
0
        public static void Main()
        {
            EventsManagerFast eventsManager = new EventsManagerFast();
            CommandExecutor commandExecutor = new CommandExecutor(eventsManager);
            StringBuilder outputResult = new StringBuilder();

            while (true)
            {
                string commandType = Console.ReadLine();
                if (commandType == "End" || commandType == null)
                {
                    break;
                }

                // using StringBuilder and one Console.WriteLine instead of Console.WriteLine every time
                // because print on console is very slow operation
                Command currentCommand = Command.Parse(commandType);
                outputResult.AppendLine(commandExecutor.ProcessCommand(currentCommand));
            }

            Console.WriteLine(outputResult.ToString().Trim());
        }
예제 #29
0
        internal static void Main()
        {
            var eventsManager = new EventsManagerFast();
            var commandExecutor = new CommandExecutor(eventsManager);

            bool shouldReadCommands = true;

            while (shouldReadCommands)
            {
                string command = Console.ReadLine();
                if (command == "End" || string.IsNullOrEmpty(command))
                {
                    shouldReadCommands = false;
                }
                else
                {
                    Command parsedCommand = Command.Parse(command);
                    string commandResult = commandExecutor.ProcessCommand(parsedCommand);
                    Console.WriteLine(commandResult);
                }
            }
        }
예제 #30
0
        public static void Main()
        {
            EventsManagerFast eventsManager   = new EventsManagerFast();
            CommandExecutor   commandExecutor = new CommandExecutor(eventsManager);
            StringBuilder     outputResult    = new StringBuilder();

            while (true)
            {
                string commandType = Console.ReadLine();
                if (commandType == "End" || commandType == null)
                {
                    break;
                }

                // using StringBuilder and one Console.WriteLine instead of Console.WriteLine every time
                // because print on console is very slow operation
                Command currentCommand = Command.Parse(commandType);
                outputResult.AppendLine(commandExecutor.ProcessCommand(currentCommand));
            }

            Console.WriteLine(outputResult.ToString().Trim());
        }
        public static void Main()
        {
            var eventManager = new EventsManagerFast();
            var cmdExecutor = new CommandExecutor(eventManager);

            while (true)
            {
                string inputLine = Console.ReadLine();
                if (inputLine == "End" || inputLine == null)
                {
                    break;
                }

                try
                {
                    Console.WriteLine(cmdExecutor.ProcessCommand(Command.Parse(inputLine)));
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
        }
        public void TestAddMultipleEvents()
        {
            EventsManagerFast eventManager = new EventsManagerFast();

            Event ev = new Event();
            ev.Title = "Rock party - 407026";
            ev.Date = DateTime.ParseExact("2012-03-31T23:59:57", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
            ev.Location = "home - 681328";
            eventManager.AddEvent(ev);

            Event ev2 = new Event();
            ev2.Title = "party Lora - 198672";
            ev2.Date = DateTime.ParseExact("2001-01-01T10:30:03", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
            ev2.Location = "- 235165";
            eventManager.AddEvent(ev2);

            Event ev3 = new Event();
            ev3.Title = "Chalga party - 974464";
            ev3.Date = DateTime.ParseExact("2001-01-01T10:30:01", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
            ev3.Location = "at school - 4795";
            eventManager.AddEvent(ev3);

            Assert.AreEqual(3, eventManager.EventsByTitleCount);
        }
 public void CreateEventsManagerFastInstance()
 {
     this.manager = new EventsManagerFast();
 }
        public void DeleteEventTest()
        {
            EventsManagerFast fastManager = new EventsManagerFast();

            var firstDate = DateTime.ParseExact("2012-01-21T20:00:00", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
            var secondDate = DateTime.ParseExact("2012-05-21T20:00:00", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
            Event firstEvent = new Event(firstDate, "Party 1", "Sofia");
            Event secondEvent = new Event(secondDate, "Party 2", "Burgas");

            fastManager.AddEvent(firstEvent);
            fastManager.AddEvent(secondEvent);

            int expected = fastManager.DeleteEventsByTitle("Party 2");
            int actual = 1;

            Assert.AreEqual(1, fastManager.Count);
            Assert.AreEqual(expected, actual);
        }
        public void ListMatchingEventsFirstOnlyTest()
        {
            EventsManagerFast fastManager = new EventsManagerFast();

            var firstDate = DateTime.ParseExact("2012-01-21T20:00:00", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
            var secondDate = DateTime.ParseExact("2012-01-21T20:00:00", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
            var thirdDate = DateTime.ParseExact("2012-01-21T20:00:00", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
            var fourthDate = DateTime.ParseExact("2012-01-21T20:00:00", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
            Event firstEvent = new Event(firstDate, "Sofia Party", "Sofia");
            Event secondEvent = new Event(secondDate, "Burgas Party", "Burgas");
            Event thirdEvent = new Event(thirdDate, "Varna Party", "Varna");
            Event fourthEvent = new Event(fourthDate, "Na selo Party", "Na selo");

            fastManager.AddEvent(firstEvent);
            fastManager.AddEvent(secondEvent);
            fastManager.AddEvent(thirdEvent);
            fastManager.AddEvent(fourthEvent);

            var date = DateTime.ParseExact("2012-01-20T21:00:00", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
            var result = fastManager.ListEvents(date, 1);

            Assert.AreEqual(1, result.Count());
            Assert.AreSame(secondEvent, result.First()); // because Burgas is alphabetically first
        }
        public void ListNoResultTest()
        {
            EventsManagerFast fastManager = new EventsManagerFast();

            var firstDate = DateTime.ParseExact("2012-01-21T20:00:00", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
            Event firstEvent = new Event(firstDate, "Party 1", "Sofia");

            fastManager.AddEvent(firstEvent);

            var date = DateTime.ParseExact("2012-01-21T21:00:00", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
            var result = fastManager.ListEvents(date, 5);

            Assert.AreEqual(0, result.Count());
        }
        public void ListSingleEventTest()
        {
            EventsManagerFast fastManager = new EventsManagerFast();

            var firstDate = DateTime.ParseExact("2012-01-21T20:00:00", "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
            Event firstEvent = new Event(firstDate, "Party 1", "Sofia");

            fastManager.AddEvent(firstEvent);

            var result = fastManager.ListEvents(firstDate, 1); // search for the same date

            Assert.AreEqual(1, result.Count());
            Assert.AreSame(firstEvent, result.First());
        }