예제 #1
0
        public void ReadPlaylists()
        {
            using (Stream saveFileStream = Helpers.GenerateSaveFile().ToStream())
            {
                Playlist[] playlists = LibraryReader.ReadPlaylists(saveFileStream).ToArray();

                Playlist playlist1  = playlists[0];
                Song[]   songs1     = playlist1.ToArray();
                Song     localSong1 = Helpers.LocalSong1;
                Song     localSong2 = Helpers.LocalSong2;

                Assert.AreEqual("Playlist1", playlist1.Name);
                Assert.AreEqual(localSong1.OriginalPath, songs1[0].OriginalPath);
                Assert.IsInstanceOf(localSong1.GetType(), songs1[0]);

                Assert.AreEqual(localSong2.OriginalPath, songs1[1].OriginalPath);
                Assert.IsInstanceOf(localSong2.GetType(), songs1[1]);

                Playlist playlist2    = playlists[1];
                Song[]   songs2       = playlist2.ToArray();
                Song     youtubeSong1 = Helpers.YoutubeSong1;

                Assert.AreEqual("Playlist2", playlist2.Name);
                Assert.AreEqual(localSong1.OriginalPath, songs2[0].OriginalPath);
                Assert.IsInstanceOf(localSong1.GetType(), songs2[0]);

                Assert.AreEqual(youtubeSong1.OriginalPath, songs2[1].OriginalPath);
                Assert.AreEqual(youtubeSong1.Title, songs2[1].Title);
                Assert.AreEqual(youtubeSong1.Duration.Ticks, songs2[1].Duration.Ticks);
                Assert.IsInstanceOf(youtubeSong1.GetType(), songs2[1]);
            }
        }
예제 #2
0
        public void Read_should_be_equal_mocked_collection()
        {
            //Arrange
            _libraryReader = new LibraryReader(File.OpenRead(_path), _schemaPath);
            var mockedCollection = GetMockedCorectLibraryElements();
            //Act
            var result = _libraryReader.ToList();

            _libraryReader.Close();
            //Assert
            CollectionAssert.AreEqual(mockedCollection, result);
        }
예제 #3
0
        public void Take_AssignsReader()
        {
            List <Book>    Books      = new List <Book>();
            LibraryManager Manager    = LibraryManager.Instance;
            Book           TestBook   = new Book("name", "author", "category", "language", new LocalDate(2021, 5, 15), "isbn");
            LibraryReader  TestReader = new LibraryReader("Vardenis", "Pavardenis", new LocalDate(2021, 5, 20));

            Manager.AddBook(Books, TestBook);
            Manager.TakeBook(Books, 0, TestReader);

            Assert.AreEqual(Books.First().Reader, TestReader);
        }
        private List <T> ReadXmlFile <T>() where T : class
        {
            List <T> elements;
            var      settings = new LibrarySettings();
            var      stream   = new FileStream(PathStrings.FileToRead, FileMode.Open);

            using (stream)
            {
                elements = new LibraryReader <IElement>(stream, settings).Where(_ => _ is T).Cast <T>().ToList();
            }

            return(elements);
        }
예제 #5
0
        public LibraryWriter()
        {
            var s3Config = new AmazonS3Config {
                ServiceURL = "https://s3-eu-west-1.amazonaws.com"
            };
            var dbConfig = new AmazonDynamoDBConfig {
                ServiceURL = "https://dynamodb.eu-west-1.amazonaws.com"
            };

            _s3 = new AmazonS3Client(s3Config);
            _db = new AmazonDynamoDBClient(dbConfig);

            _file    = new FileReader();
            _library = new LibraryReader();
        }
        public void Write_should_write_empty_file_without_elements()
        {
            //Arange
            var path        = $"{Directory.GetCurrentDirectory()}\\BrokenLibrary.xml";
            var streamWrite = new FileStream(path, FileMode.Create, FileAccess.Write);
            //Act
            var libraryWriter = new LibraryWriter(streamWrite);

            libraryWriter.Write(GetMockedUnCorectLibraryElements(), "BrokenLibrary");
            libraryWriter.Close();
            var streamRead    = new FileStream(path, FileMode.Open, FileAccess.Read);
            var libraryReader = new LibraryReader(streamRead, _schemaPath);

            libraryReader.Close();
            //Assert
            Assert.That(!libraryReader.Any());
        }
예제 #7
0
        public void ReadSongs()
        {
            using (Stream saveFileStream = Helpers.GenerateSaveFile().ToStream())
            {
                LocalSong[] songs = LibraryReader.ReadSongs(saveFileStream).ToArray();

                Song actualSong1   = songs[0];
                Song expectedSong1 = Helpers.LocalSong1;

                AssertSongsAreEqual(expectedSong1, actualSong1);

                Song actualSong2   = songs[1];
                Song expectedSong2 = Helpers.LocalSong2;

                AssertSongsAreEqual(expectedSong2, actualSong2);
            }
        }
        public void CanToWriteRealCollectioToRealFileTest()
        {
            List <IElement> library;
            var             settings    = new LibrarySettings();
            var             outSettings = new OutputSettings();

            var stream = new FileStream(PathStrings.FileToRead, FileMode.Open);

            using (stream)
            {
                library = new LibraryReader <IElement>(stream, settings).ToList();
            }
            stream = new FileStream(PathStrings.FileToWrite, FileMode.Create);
            using (stream)
            {
                var writer = new LibraryWriter <IElement>(library, settings);
                writer.WriteXElements(stream, outSettings);
            }
        }
예제 #9
0
        public void Take_DateOver2Months_ShouldThrowTakenDatePeriod()
        {
            List <Book>    Books              = new List <Book>();
            LibraryManager Manager            = LibraryManager.Instance;
            Book           TestBook           = new Book("name", "author", "category", "language", new LocalDate(2021, 5, 15), "isbn");
            LibraryReader  TestReader         = new LibraryReader("Vardenis", "Pavardenis", new LocalDate(2023, 5, 20));
            bool           ExceptionWasThrown = false;

            try
            {
                Manager.AddBook(Books, TestBook);
                Manager.TakeBook(Books, 0, TestReader);
            }
            catch (TakeDatePeriodException e)
            {
                ExceptionWasThrown = true;
            }

            Assert.IsTrue(ExceptionWasThrown);
        }
        private List <T> ReadXmlString <T>(string xmlString, bool withFailSettings = false) where T : class
        {
            var settings = new LibrarySettings();

            if (withFailSettings)
            {
                settings.MainElementName = null;
            }
            List <T> elements;
            var      stream = new MemoryStream();

            using (stream)
            {
                var writer = new StreamWriter(stream);
                writer.Write(xmlString);
                writer.Flush();
                stream.Position = 0;
                elements        = new LibraryReader <T>(stream, settings).ToList();
            }
            return(elements);
        }
예제 #11
0
        public void Take_TakingMoreThan3Books_ShouldThrowTakenBooksLimit()
        {
            const int      BookAmount         = 4;
            List <Book>    Books              = new List <Book>();
            LibraryManager Manager            = LibraryManager.Instance;
            Book           TestBook           = new Book("name", "author", "category", "language", new LocalDate(2021, 5, 15), "isbn");
            LibraryReader  TestReader         = new LibraryReader("Vardenis", "Pavardenis", new LocalDate(2021, 5, 20));
            bool           ExceptionWasThrown = false;

            try
            {
                for (uint i = 0; i < BookAmount; i++)
                {
                    Manager.AddBook(Books, TestBook);
                    Manager.TakeBook(Books, i, TestReader);
                }
            }
            catch (TakenBooksLimitException e)
            {
                ExceptionWasThrown = true;
            }

            Assert.IsTrue(ExceptionWasThrown);
        }
예제 #12
0
 static LibraryReader.Client GetClientByID(LibraryReader.LibraryEntities context, int clientID)
 {
     LibraryReader.Client cl = context.Clients.FirstOrDefault(
         p => p.ClientID == clientID);
     return cl;
 }
예제 #13
0
        static void Main(string[] args)
        {
            string         fileName = "Books.json";
            string         filePath = Path.Combine(Environment.CurrentDirectory, fileName);
            LibraryManager Manager  = LibraryManager.Instance;
            Book           newBook;
            LibraryReader  reader;
            List <Book>    Books;

            Filter currentFilter;

            if (!File.Exists(filePath))
            {
                File.Create(filePath).Close();
            }
            try
            {
                switch (args[0])
                {
                case "-h":
                    DisplayHelp();
                    break;

                case "-a":
                    newBook = new Book(args[1], args[2], args[3], args[4], Manager.ParseDate(args[5]), args[6]);
                    Books   = Manager.GetBooks(filePath);
                    Manager.AddBook(Books, newBook);
                    Manager.SetBooks(Books, filePath);
                    break;

                case "-t":
                    reader = new LibraryReader(args[2], args[3], Manager.ParseDate(args[4]));
                    Books  = Manager.GetBooks(filePath);
                    Manager.TakeBook(Books, (uint)Int32.Parse(args[1]), reader);
                    Manager.SetBooks(Books, filePath);
                    break;

                case "-r":
                    reader = new LibraryReader(args[2], args[3]);
                    Books  = Manager.GetBooks(filePath);
                    Manager.ReturnBook(Books, (uint)Int32.Parse(args[1]), reader);
                    Manager.SetBooks(Books, filePath);
                    break;

                case "-l":
                    if (Enum.TryParse(args[1], out currentFilter))
                    {
                        Books = Manager.GetBooks(filePath);
                        if (args.Length == 2)
                        {
                            Console.WriteLine(Manager.ListBooks(Books, currentFilter, null));
                        }
                        else
                        {
                            Console.WriteLine(Manager.ListBooks(Books, currentFilter, args[2]));
                        }
                    }
                    break;

                case "-d":
                    Books = Manager.GetBooks(filePath);
                    Manager.DeleteBook(Books, (uint)Int32.Parse(args[1]));
                    Manager.SetBooks(Books, filePath);
                    break;

                default:
                    Console.WriteLine("Invalid arguments.\n");
                    break;
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }