/// <summary>
 /// Asserts that the <paramref name="container"/> contains equivalent values from the <paramref name="sqlContainer"/>.
 /// </summary>
 /// <param name="sqlContainer">The container with expected values.</param>
 /// <param name="container">The container with actual values.</param>
 private static void AssertChildContainer(SqlContainer sqlContainer, Container container)
 {
     Assert.AreEqual(sqlContainer.Title, container.Title);
     Assert.AreEqual(sqlContainer.Items.Count, container.Items.Count);
     AssertItem(sqlContainer.Items.First(), container.Items[0]);
     Assert.AreEqual(sqlContainer.Containers.Count, container.Containers.Count);
 }
Exemple #2
0
        public void ShouldFilterResultsWhenLoadingLibraryWithFilter()
        {
            var context = new RoughCutEditorEntities();

            using (TransactionScope transactionScope = new TransactionScope())
            {
                var libraryId    = CreateId(typeof(Services.Contracts.Container).Name);
                var dataProvider = new DataProvider(this.loggerService, libraryId);

                Container container = Container.CreateContainer(libraryId.ToString());
                container.Title = "Test";

                Item item1 = SqlHelper.CreateSqlVideoItem();
                item1.Title = "FilterItem";
                Item item2 = SqlHelper.CreateSqlAudioItem();
                item2.Title = "Test";
                Item item3 = SqlHelper.CreateSqlImageItem();
                item3.Title = "Test2";

                container.Items.Add(item1);
                container.Items.Add(item2);
                container.Items.Add(item3);

                context.AddToContainer(container);

                context.SaveChanges();

                var filter = "Filter";

                var library = dataProvider.LoadLibrary(filter, 0);

                Assert.AreEqual(1, library.Items.Count);
            }
        }
 /// <summary>
 /// Asserts that the <paramref name="container"/> contains equivalent values from the <paramref name="sqlContainer"/>.
 /// </summary>
 /// <param name="sqlContainer">The container with expected values.</param>
 /// <param name="container">The container with actual values.</param>
 /// <param name="maxNumberOfItems">The max number of items to retrieve.</param>
 public static void AssertContainer(SqlContainer sqlContainer, Container container, int maxNumberOfItems)
 {
     Assert.AreEqual(sqlContainer.Title, container.Title);
     Assert.AreEqual(maxNumberOfItems, container.Items.Count);
     AssertItem(sqlContainer.Items.First(), container.Items[0]);
     Assert.AreEqual(sqlContainer.Containers.Count, container.Containers.Count);
     AssertChildContainer(sqlContainer.Containers.First(), container.Containers[0]);
 }
        /// <summary>
        /// Creates a sql container for testing.
        /// </summary>
        /// <returns>A sql container with values.</returns>
        private static SqlContainer CreateSqlChildContainer()
        {
            var container = new SqlContainer();

            container.Id    = 1;
            container.Title = "Title";
            container.Items.Add(CreateSqlVideoItem());

            return(container);
        }
        /// <summary>
        /// Converts a <see cref="Container"/> into a <see cref="Sql.Container"/>.
        /// </summary>
        /// <param name="mediaBin">The <see cref="Container"/> being converted.</param>
        /// <param name="sqlMediaBin">The converted <see cref="Sql.Container"/> that contains equivalent values from the <paramref name="mediaBin"/>.</param>
        /// /// <param name="items">The existent items to look for the items of the container.</param>
        /// <returns>A new <see cref="Project"/> that contains equivalent values from the <paramref name="sqlMediaBin"/>.</returns>
        public static SqlContainer ConvertToSqlMediaBin(Container mediaBin, SqlContainer sqlMediaBin, IEnumerable <SqlItem> items)
        {
            sqlMediaBin.Title = mediaBin.Title;

            foreach (MediaItem item in mediaBin.Items)
            {
                sqlMediaBin.Items.Add(ConvertToSqlItem(item, items));
            }

            return(sqlMediaBin);
        }
Exemple #6
0
        public void ShouldLoadMediaBin()
        {
            var context = new RoughCutEditorEntities();

            using (TransactionScope transactionScope = new TransactionScope())
            {
                var libraryId    = CreateId(typeof(Services.Contracts.Container).Name);
                var dataProvider = new DataProvider(this.loggerService, null, libraryId);

                Project project = Project.CreateProject(1, "creator", DateTime.Now);

                Item item = SqlHelper.CreateSqlVideoItem();
                item.Id = 1;
                item.Resources.First().Id = 1;
                item.Resources.First().VideoFormat.Id = 1;
                Item childItem = SqlHelper.CreateSqlVideoItem();
                childItem.Id = 2;
                childItem.Resources.First().Id = 2;
                childItem.Resources.First().VideoFormat.Id = 2;

                context.AddToItem(item);
                context.AddToItem(childItem);

                context.SaveChanges();

                Container mediaBin = Container.CreateContainer(1);
                mediaBin.Items.Add(item);

                Container childContainer = Container.CreateContainer(2);
                childContainer.Items.Add(childItem);
                mediaBin.Containers.Add(childContainer);

                context.AddToContainer(mediaBin);

                context.SaveChanges();

                var mediaBinContainer = dataProvider.LoadMediaBin(new Uri(string.Format(IdUrlTemplate, mediaBin.Id)));

                Assert.AreEqual(1, mediaBinContainer.Items.Count);
                Assert.AreEqual(1, mediaBinContainer.Containers.Count);
                Assert.AreEqual(0, mediaBinContainer.Containers[0].Items.Count);
                Assert.AreEqual(string.Format(IdUrlTemplate, item.Id), mediaBinContainer.Items[0].Id.ToString());
                Assert.AreEqual(item.Title, mediaBinContainer.Items[0].Title);
                Assert.AreEqual(item.Description, mediaBinContainer.Items[0].Description);
                Assert.IsInstanceOfType(mediaBinContainer.Items[0], typeof(VideoItem));
                Assert.AreEqual(1, mediaBinContainer.Items[0].Resources.Count);
                Assert.AreEqual(string.Format(IdUrlTemplate, item.Resources.First().Id), mediaBinContainer.Items[0].Resources[0].Id.ToString());
                Assert.AreEqual(item.Resources.First().Ref, mediaBinContainer.Items[0].Resources[0].Ref);
                Assert.AreEqual(item.Resources.First().VideoFormat.Duration, ((VideoItem)mediaBinContainer.Items[0]).Duration);
                Assert.AreEqual(item.Resources.First().VideoFormat.FrameRate, ((VideoItem)mediaBinContainer.Items[0]).FrameRate.ToString());
                Assert.AreEqual(item.Resources.First().VideoFormat.ResolutionX, ((VideoItem)mediaBinContainer.Items[0]).Width);
                Assert.AreEqual(item.Resources.First().VideoFormat.ResolutionY, ((VideoItem)mediaBinContainer.Items[0]).Height);
            }
        }
Exemple #7
0
        public void ShouldLoadLibrary()
        {
            var context = new RoughCutEditorEntities();

            using (TransactionScope transactionScope = new TransactionScope())
            {
                var libraryId    = CreateId(typeof(Services.Contracts.Container).Name);
                var dataProvider = new DataProvider(this.loggerService, null, libraryId);

                Container container = Container.CreateContainer(1);
                container.Title = "Test";

                Container childContainer = Container.CreateContainer(2);
                childContainer.Title = "ChildContainer";

                Item item = SqlHelper.CreateSqlVideoItem();
                item.Id = 1;
                item.Resources.First().Id = 1;
                item.Resources.First().VideoFormat.Id = 1;

                Item childItem = SqlHelper.CreateSqlVideoItem();
                childItem.Id = 2;
                childItem.Resources.First().Id = 2;
                childItem.Resources.First().VideoFormat.Id = 2;

                container.Items.Add(item);
                childContainer.Items.Add(childItem);

                container.Containers.Add(childContainer);
                context.AddToContainer(container);

                context.SaveChanges();

                var library = dataProvider.LoadLibrary(1000);

                Assert.AreEqual(container.Title, library.Title);
                Assert.AreEqual(1, library.Items.Count);
                Assert.AreEqual(1, library.Containers.Count);
                Assert.AreEqual(childContainer.Title, library.Containers[0].Title);
                Assert.AreEqual(0, library.Containers[0].Items.Count);
                Assert.AreEqual(string.Format(IdUrlTemplate, item.Id), library.Items[0].Id.ToString());
                Assert.AreEqual(item.Title, library.Items[0].Title);
                Assert.AreEqual(item.Description, library.Items[0].Description);
                Assert.IsInstanceOfType(library.Items[0], typeof(VideoItem));
                Assert.AreEqual(1, library.Items[0].Resources.Count);
                Assert.AreEqual(string.Format(IdUrlTemplate, item.Resources.First().Id), library.Items[0].Resources[0].Id.ToString());
                Assert.AreEqual(item.Resources.First().Ref, library.Items[0].Resources[0].Ref);
                Assert.AreEqual(item.Resources.First().ResourceType, library.Items[0].Resources[0].ResourceType);
                Assert.AreEqual(item.Resources.First().VideoFormat.Duration, ((VideoItem)library.Items[0]).Duration);
                Assert.AreEqual(item.Resources.First().VideoFormat.FrameRate, ((VideoItem)library.Items[0]).FrameRate.ToString());
                Assert.AreEqual(item.Resources.First().VideoFormat.ResolutionX, ((VideoItem)library.Items[0]).Width);
                Assert.AreEqual(item.Resources.First().VideoFormat.ResolutionY, ((VideoItem)library.Items[0]).Height);
            }
        }
        /// <summary>
        /// Creates a sql container for testing.
        /// </summary>
        /// <returns>A sql container with values.</returns>
        public static SqlContainer CreateSqlContainer()
        {
            var container = new SqlContainer();

            container.Id    = 1;
            container.Title = "Title";
            container.Items.Add(CreateSqlImageItem());
            container.Items.Add(CreateSqlVideoItem());
            container.Items.Add(CreateSqlAudioItem());
            container.Containers.Add(CreateSqlChildContainer());

            return(container);
        }
Exemple #9
0
        public void ShouldRetrieveProjectsByUser()
        {
            var context = new RoughCutEditorEntities();

            using (TransactionScope transactionScope = new TransactionScope())
            {
                var libraryId    = CreateId(typeof(Services.Contracts.Container).Name);
                var dataProvider = new DataProvider(this.loggerService, null, libraryId);

                Project project1 = Project.CreateProject(1, "creator", DateTime.Now);
                project1.Duration         = 100;
                project1.Resolution       = "HD";
                project1.AutoSaveInterval = 100;
                project1.StartTimeCode    = 3600;
                project1.SmpteFrameRate   = "Smpte2997NonDrop";
                project1.RippleMode       = true;

                Container mediaBin1 = Container.CreateContainer(1);

                project1.MediaBin = mediaBin1;

                Project project2 = Project.CreateProject(2, "notthesamecreator", DateTime.Now);
                project2.Duration         = 100;
                project2.Resolution       = "HD";
                project2.AutoSaveInterval = 100;
                project2.StartTimeCode    = 3600;
                project2.SmpteFrameRate   = "Smpte2997NonDrop";
                project2.RippleMode       = true;

                Container mediaBin2 = Container.CreateContainer(2);

                project2.MediaBin = mediaBin2;

                context.AddToProject(project1);
                context.AddToProject(project2);
                context.SaveChanges();

                var projects = dataProvider.GetProjectsByUser("creator");

                Assert.AreEqual(1, projects.Count());
                Assert.AreEqual(project1.Duration, projects[0].Duration);
                Assert.AreEqual(project1.Resolution, projects[0].Resolution);
                Assert.AreEqual(project1.AutoSaveInterval, projects[0].AutoSaveInterval);
                Assert.AreEqual(project1.StartTimeCode, projects[0].StartTimeCode);
                Assert.AreEqual(project1.SmpteFrameRate, projects[0].SmpteFrameRate);
                Assert.AreEqual(project1.RippleMode, projects[0].RippleMode);
                Assert.AreEqual(project1.Creator, projects[0].Creator);
            }
        }
        public void ShouldConvertMediaBinToSqlContainer()
        {
            var mediaBin    = SqlHelper.CreateMediaBin();
            var sqlMediaBin = new SqlContainer();

            var item = SqlHelper.CreateSqlItem();

            item.Id = mediaBin.Items.First().Id.ToString();
            item.Resources.First().Id = mediaBin.Items.First().Resources.First().Id.ToString();

            var items = new List <SqlItem> {
                item
            };

            var result = SqlDataProviderTranslator.ConvertToSqlMediaBin(mediaBin, sqlMediaBin, items);

            SqlHelper.AssertContainer(mediaBin, result);
        }
Exemple #11
0
        public void ShouldLimitResultsWhenLoadingLibraryWithMaxNumberOfItems()
        {
            var context = new RoughCutEditorEntities();

            using (TransactionScope transactionScope = new TransactionScope())
            {
                var libraryId    = CreateId(typeof(Services.Contracts.Container).Name);
                var dataProvider = new DataProvider(this.loggerService, null, libraryId);

                Container container = Container.CreateContainer(1);
                container.Title = "Test";

                Item item1 = SqlHelper.CreateSqlVideoItem();
                item1.Id = 1;
                item1.Resources.First().Id = 1;
                item1.Resources.First().VideoFormat.Id = 1;
                Item item2 = SqlHelper.CreateSqlAudioItem();
                item2.Id = 2;
                item2.Resources.First().Id = 2;
                item2.Resources.First().AudioFormat.Id = 2;
                Item item3 = SqlHelper.CreateSqlImageItem();
                item3.Id = 3;
                item3.Resources.First().Id = 3;
                item3.Resources.First().ImageFormat.Id = 3;

                container.Items.Add(item1);
                container.Items.Add(item2);
                container.Items.Add(item3);

                context.AddToContainer(container);

                context.SaveChanges();

                var maxNumberOfItems = 2;

                var library = dataProvider.LoadLibrary(maxNumberOfItems);

                Assert.AreEqual(maxNumberOfItems, library.Items.Count);
            }
        }
        /// <summary>
        /// Converts the SQL result to media bin.
        /// </summary>
        /// <param name="sqlMediaBin">The SQL result of media bin.</param>
        /// <returns>The <see cref="MediaBin"/>.</returns>
        public static MediaBin ConvertToMediaBin(SqlContainer sqlMediaBin, IMetadataLocator metadataLocator)
        {
            MediaBin mediaBin = new MediaBin
            {
                Id    = CreateUri(sqlMediaBin.Id),
                Title = sqlMediaBin.Title
            };

            foreach (SqlItem item in sqlMediaBin.Items)
            {
                mediaBin.Items.Add(ConvertToMediaItem(item, metadataLocator));
            }

            foreach (SqlContainer sqlChildContainer in sqlMediaBin.Containers)
            {
                Container childContainer = ConvertToContainer(sqlChildContainer, metadataLocator);

                mediaBin.Containers.Add(childContainer);
            }

            return(mediaBin);
        }
        /// <summary>
        /// Converts a <see cref="SqlContainer"/> into a <seealso cref="Container"/>.
        /// </summary>
        /// <param name="sqlContainer">The <see cref="SqlContainer"/> being converted.</param>
        /// <param name="filter">The filter to apply to the items of the <paramref name="sqlContainer"/>.</param>
        /// <param name="maxNumberOfItems">The max number of items that the new container should contains.</param>
        /// <returns>A new <see cref="Container"/> that contains equivalent values from the <paramref name="sqlContainer"/>.</returns>
        public static Container ConvertToContainer(SqlContainer sqlContainer, string filter, int maxNumberOfItems, IMetadataLocator metadataLocator)
        {
            Container container = new Container
            {
                Id    = CreateUri(sqlContainer.Id),
                Title = sqlContainer.Title
            };

            if (maxNumberOfItems > 0)
            {
                foreach (SqlItem item in sqlContainer.Items)
                {
                    if (container.Items.Count < maxNumberOfItems)
                    {
                        MediaItem mediaItem = ConvertToMediaItem(item, metadataLocator);

                        if (string.IsNullOrEmpty(filter))
                        {
                            container.Items.Add(mediaItem);
                        }
                        else
                        {
                            if (mediaItem.Title.Contains(filter))
                            {
                                container.Items.Add(mediaItem);
                            }
                        }
                    }
                }
            }
            else
            {
                foreach (SqlItem item in sqlContainer.Items)
                {
                    MediaItem mediaItem = ConvertToMediaItem(item, metadataLocator);

                    if (string.IsNullOrEmpty(filter))
                    {
                        container.Items.Add(mediaItem);
                    }
                    else
                    {
                        if (mediaItem.Title.Contains(filter))
                        {
                            container.Items.Add(mediaItem);
                        }
                    }
                }
            }

            foreach (SqlContainer sqlChildContainer in sqlContainer.Containers)
            {
                Container childContainer = ConvertToContainer(sqlChildContainer, filter, maxNumberOfItems, metadataLocator);

                if (string.IsNullOrEmpty(filter))
                {
                    container.Containers.Add(childContainer);
                }
                else
                {
                    foreach (Item item in childContainer.Items)
                    {
                        container.Items.Add(item);
                    }
                }
            }

            return(container);
        }
 /// <summary>
 /// Converts a <see cref="SqlContainer"/> into a <seealso cref="Container"/>.
 /// </summary>
 /// <param name="sqlContainer">The <see cref="SqlContainer"/> being converted.</param>
 /// <returns>A new <see cref="Container"/> that contains equivalent values from the <paramref name="sqlContainer"/>.</returns>
 public static Container ConvertToContainer(SqlContainer sqlContainer, IMetadataLocator metadataLocator)
 {
     return(ConvertToContainer(sqlContainer, null, 0, metadataLocator));
 }
Exemple #15
0
        public void ShouldDeleteProject()
        {
            var context = new RoughCutEditorEntities();

            using (TransactionScope transactionScope = new TransactionScope())
            {
                var libraryId    = CreateId(typeof(Services.Contracts.Container).Name);
                var dataProvider = new DataProvider(this.loggerService, null, libraryId);

                Item item = Item.CreateItem(1, "title", "Video");
                item.Description = "description";
                item.Resources   = new EntityCollection <Resource>();
                Resource resource = Resource.CreateResource(1, "\test\test.wmv", "Master");
                resource.VideoFormat             = VideoFormat.CreateVideoFormat(1);
                resource.VideoFormat.Duration    = 10;
                resource.VideoFormat.FrameRate   = "Smpte25";
                resource.VideoFormat.ResolutionX = 200;
                resource.VideoFormat.ResolutionY = 500;
                item.Resources.Add(resource);

                context.AddToItem(item);

                TitleTemplate titleTemplate = TitleTemplate.CreateTitleTemplate(1, "TemplateName");

                context.AddToTitleTemplate(titleTemplate);

                context.SaveChanges();

                Project project = Project.CreateProject(1, "creator", DateTime.Now);
                project.Duration         = 100;
                project.Resolution       = "HD";
                project.AutoSaveInterval = 100;
                project.StartTimeCode    = 3600;
                project.SmpteFrameRate   = "Smpte2997NonDrop";
                project.RippleMode       = true;

                Container mediaBin = Container.CreateContainer(1);
                mediaBin.Items.Add(item);

                Container container = Container.CreateContainer(2);
                mediaBin.Containers.Add(container);

                project.MediaBin = mediaBin;

                Comment comment = Comment.CreateComment(1, "Text", "Timeline", "user", DateTime.Today);
                comment.MarkIn  = 1200;
                comment.MarkOut = 1500;

                Comment shotComment = Comment.CreateComment(2, "Text", "Shot", "user", DateTime.Today);
                shotComment.MarkIn  = 170;
                shotComment.MarkOut = 180;

                project.Comments.Add(comment);
                project.Comments.Add(shotComment);

                Track track = Track.CreateTrack(1, "Video");

                Shot shot = Shot.CreateShot(1);
                shot.Item         = item;
                shot.ItemMarkIn   = 150;
                shot.ItemMarkOut  = 200;
                shot.TrackMarkIn  = 500;
                shot.TrackMarkOut = 0;
                shot.Volume       = 5;
                shot.Comments.Add(shotComment);

                track.Shots = new EntityCollection <Shot>();
                track.Shots.Add(shot);

                project.Tracks.Add(track);

                Title title = Title.CreateTitle(1, 600, 100, "Main", "Sub");
                title.TitleTemplate = titleTemplate;

                project.Titles.Add(title);

                context.AddToProject(project);

                context.SaveChanges();

                var retrievedProject = dataProvider.LoadProject(new Uri(string.Format("http://temp/{0}", project.Id)));

                bool result = dataProvider.DeleteProject(new Uri(string.Format("http://temp/{0}", project.Id)));
                var  retrievedDeletedProject = dataProvider.LoadProject(new Uri(string.Format("http://temp/{0}", project.Id)));

                Assert.IsTrue(result);
                Assert.IsNull(retrievedDeletedProject.Id);
            }
        }
Exemple #16
0
        public void ShouldLoadProject()
        {
            var context = new RoughCutEditorEntities();

            using (TransactionScope transactionScope = new TransactionScope())
            {
                var libraryId    = CreateId(typeof(Services.Contracts.Container).Name);
                var dataProvider = new DataProvider(this.loggerService, null, libraryId);

                Item item = Item.CreateItem(1, "title", "Video");
                item.Description = "description";
                item.Resources   = new EntityCollection <Resource>();
                Resource resource = Resource.CreateResource(1, "\test\test.wmv", "Master");
                resource.VideoFormat             = VideoFormat.CreateVideoFormat(1);
                resource.VideoFormat.Duration    = 10;
                resource.VideoFormat.FrameRate   = "Smpte25";
                resource.VideoFormat.ResolutionX = 200;
                resource.VideoFormat.ResolutionY = 500;
                item.Resources.Add(resource);

                context.AddToItem(item);

                TitleTemplate titleTemplate = TitleTemplate.CreateTitleTemplate(1, "TemplateName");

                context.AddToTitleTemplate(titleTemplate);

                context.SaveChanges();

                Project project = Project.CreateProject(1, "creator", DateTime.Now);
                project.Duration         = 100;
                project.Resolution       = "HD";
                project.AutoSaveInterval = 100;
                project.StartTimeCode    = 3600;
                project.SmpteFrameRate   = "Smpte2997NonDrop";
                project.RippleMode       = true;

                Container mediaBin = Container.CreateContainer(1);
                mediaBin.Items.Add(item);

                Container container = Container.CreateContainer(2);
                container.Items.Add(item);
                mediaBin.Containers.Add(container);

                project.MediaBin = mediaBin;

                Comment comment = Comment.CreateComment(3, "Text", "Timeline", "user", DateTime.Today);
                comment.MarkIn  = 1200;
                comment.MarkOut = 1500;

                Comment shotComment = Comment.CreateComment(4, "Text", "Shot", "user", DateTime.Today);
                shotComment.MarkIn  = 170;
                shotComment.MarkOut = 180;

                project.Comments.Add(comment);
                project.Comments.Add(shotComment);

                Track track = Track.CreateTrack(1, "Video");

                Shot shot = Shot.CreateShot(1);
                shot.Item         = item;
                shot.ItemMarkIn   = 150;
                shot.ItemMarkOut  = 200;
                shot.TrackMarkIn  = 500;
                shot.TrackMarkOut = 0;
                shot.Volume       = 5;
                shot.Comments.Add(shotComment);

                track.Shots = new EntityCollection <Shot>();
                track.Shots.Add(shot);

                project.Tracks.Add(track);

                Title title = Title.CreateTitle(1, 600, 100, "Main", "Sub");
                title.TitleTemplate = titleTemplate;

                project.Titles.Add(title);

                context.AddToProject(project);

                context.SaveChanges();

                var retrievedProject = dataProvider.LoadProject(new Uri(string.Format(IdUrlTemplate, project.Id)));

                Assert.AreEqual(project.Duration, retrievedProject.Duration);
                Assert.AreEqual(project.Resolution, retrievedProject.Resolution);
                Assert.AreEqual(project.AutoSaveInterval, retrievedProject.AutoSaveInterval);
                Assert.AreEqual(project.StartTimeCode, retrievedProject.StartTimeCode);
                Assert.AreEqual(project.SmpteFrameRate, retrievedProject.SmpteFrameRate);
                Assert.AreEqual(project.RippleMode, retrievedProject.RippleMode);
                Assert.AreEqual(project.Creator, retrievedProject.Creator);
                Assert.IsNotNull(retrievedProject.MediaBin);
                Assert.AreEqual(string.Format(IdUrlTemplate, mediaBin.Id), retrievedProject.MediaBin.Id.ToString());
                Assert.AreEqual(1, retrievedProject.MediaBin.Items.Count);
                Assert.AreEqual(1, retrievedProject.MediaBin.Containers.Count);
                Assert.AreEqual(0, retrievedProject.MediaBin.Containers[0].Items.Count);
                Assert.AreEqual(1, retrievedProject.Sequences[0].Tracks.Count);
                Assert.AreEqual(string.Format(IdUrlTemplate, track.Id), retrievedProject.Sequences[0].Tracks[0].Id.ToString());
                Assert.AreEqual(track.TrackType, retrievedProject.Sequences[0].Tracks[0].TrackType);
                Assert.AreEqual(track.Shots.Count, retrievedProject.Sequences[0].Tracks[0].Shots.Count);
                Assert.AreEqual(string.Format(IdUrlTemplate, shot.Id), retrievedProject.Sequences[0].Tracks[0].Shots[0].Id.ToString());
                Assert.AreEqual(shot.TrackMarkIn, retrievedProject.Sequences[0].Tracks[0].Shots[0].TrackAnchor.MarkIn);
                Assert.AreEqual(shot.TrackMarkOut, retrievedProject.Sequences[0].Tracks[0].Shots[0].TrackAnchor.MarkOut);
                Assert.AreEqual(shot.ItemMarkIn, retrievedProject.Sequences[0].Tracks[0].Shots[0].SourceAnchor.MarkIn);
                Assert.AreEqual(shot.ItemMarkOut, retrievedProject.Sequences[0].Tracks[0].Shots[0].SourceAnchor.MarkOut);
                Assert.AreEqual(shot.Volume, retrievedProject.Sequences[0].Tracks[0].Shots[0].Volume);
                Assert.AreEqual(1, retrievedProject.Sequences[0].Tracks[0].Shots[0].Comments.Count);
                Assert.AreEqual(string.Format(IdUrlTemplate, shotComment.Id), retrievedProject.Sequences[0].Tracks[0].Shots[0].Comments[0].Id.ToString());
                Assert.AreEqual(shotComment.Creator, retrievedProject.Sequences[0].Tracks[0].Shots[0].Comments[0].Creator);
                Assert.AreEqual(shotComment.Created, retrievedProject.Sequences[0].Tracks[0].Shots[0].Comments[0].Created);
                Assert.AreEqual(shotComment.Text, retrievedProject.Sequences[0].Tracks[0].Shots[0].Comments[0].Text);
                Assert.AreEqual(shotComment.CommentType, retrievedProject.Sequences[0].Tracks[0].Shots[0].Comments[0].Type);
                Assert.AreEqual(shotComment.MarkIn, retrievedProject.Sequences[0].Tracks[0].Shots[0].Comments[0].MarkIn);
                Assert.AreEqual(shotComment.MarkOut, retrievedProject.Sequences[0].Tracks[0].Shots[0].Comments[0].MarkOut);
                Assert.AreEqual(2, retrievedProject.Comments.Count);
                Assert.AreEqual(string.Format(IdUrlTemplate, comment.Id), retrievedProject.Comments[1].Id.ToString());
                Assert.AreEqual(comment.Created, retrievedProject.Comments[1].Created);
                Assert.AreEqual(comment.Creator, retrievedProject.Comments[1].Creator);
                Assert.AreEqual(comment.Text, retrievedProject.Comments[1].Text);
                Assert.AreEqual(comment.CommentType, retrievedProject.Comments[1].Type);
                Assert.AreEqual(comment.MarkIn, retrievedProject.Comments[1].MarkIn);
                Assert.AreEqual(comment.MarkOut, retrievedProject.Comments[1].MarkOut);
                Assert.AreEqual(string.Format(IdUrlTemplate, shotComment.Id), retrievedProject.Comments[0].Id.ToString());
                Assert.AreEqual(shotComment.Created, retrievedProject.Comments[0].Created);
                Assert.AreEqual(shotComment.Creator, retrievedProject.Comments[0].Creator);
                Assert.AreEqual(shotComment.Text, retrievedProject.Comments[0].Text);
                Assert.AreEqual(shotComment.CommentType, retrievedProject.Comments[0].Type);
                Assert.AreEqual(shotComment.MarkIn, retrievedProject.Comments[0].MarkIn);
                Assert.AreEqual(shotComment.MarkOut, retrievedProject.Comments[0].MarkOut);
                Assert.AreEqual(string.Format(IdUrlTemplate, item.Id), retrievedProject.Sequences[0].Tracks[0].Shots[0].Source.Id.ToString());
                Assert.AreEqual(item.Title, retrievedProject.Sequences[0].Tracks[0].Shots[0].Source.Title);
                Assert.AreEqual(item.Description, retrievedProject.Sequences[0].Tracks[0].Shots[0].Source.Description);
                Assert.IsInstanceOfType(retrievedProject.Sequences[0].Tracks[0].Shots[0].Source, typeof(VideoItem));
                Assert.AreEqual(string.Format(IdUrlTemplate, item.Resources.First().Id), retrievedProject.Sequences[0].Tracks[0].Shots[0].Source.Resources[0].Id.ToString());
                Assert.AreEqual(item.Resources.First().Ref, retrievedProject.Sequences[0].Tracks[0].Shots[0].Source.Resources[0].Ref);
                Assert.AreEqual(item.Resources.First().VideoFormat.Duration, ((VideoItem)retrievedProject.Sequences[0].Tracks[0].Shots[0].Source).Duration);
                Assert.AreEqual(item.Resources.First().VideoFormat.FrameRate, ((VideoItem)retrievedProject.Sequences[0].Tracks[0].Shots[0].Source).FrameRate.ToString());
                Assert.AreEqual(item.Resources.First().VideoFormat.ResolutionX, ((VideoItem)retrievedProject.Sequences[0].Tracks[0].Shots[0].Source).Width);
                Assert.AreEqual(item.Resources.First().VideoFormat.ResolutionY, ((VideoItem)retrievedProject.Sequences[0].Tracks[0].Shots[0].Source).Height);
                Assert.AreEqual(1, retrievedProject.Titles.Count);
                Assert.AreEqual(string.Format(IdUrlTemplate, title.Id), retrievedProject.Titles[0].Id.ToString());
                Assert.AreEqual(title.MainText, retrievedProject.Titles[0].TextBlockCollection[0].Text);
                Assert.AreEqual(title.SubText, retrievedProject.Titles[0].TextBlockCollection[1].Text);
                Assert.AreEqual(title.TrackMarkIn, retrievedProject.Titles[0].TrackAnchor.MarkIn);
                Assert.AreEqual(title.TrackMarkOut, retrievedProject.Titles[0].TrackAnchor.MarkOut);
                Assert.AreEqual(string.Format(IdUrlTemplate, title.TitleTemplate.Id), retrievedProject.Titles[0].TitleTemplate.Id.ToString());
                Assert.AreEqual(title.TitleTemplate.TemplateName, retrievedProject.Titles[0].TitleTemplate.TemplateName);
            }
        }
 /// <summary>
 /// Converts a <see cref="SqlContainer"/> into a <seealso cref="Container"/>.
 /// </summary>
 /// <param name="sqlContainer">The <see cref="SqlContainer"/> being converted.</param>
 /// <returns>A new <see cref="Container"/> that contains equivalent values from the <paramref name="sqlContainer"/>.</returns>
 public static Container ConvertToContainer(SqlContainer sqlContainer)
 {
     return(ConvertToContainer(sqlContainer, null, 0));
 }
 /// <summary>
 /// Asserts that the <paramref name="sqlContainer"/> contains equivalent values from the <paramref name="container"/>.
 /// </summary>
 /// <param name="container">The container with expected values.</param>
 /// <param name="sqlContainer">The container with actual values.</param>
 public static void AssertContainer(Container container, SqlContainer sqlContainer)
 {
     Assert.AreEqual(container.Title, sqlContainer.Title);
     Assert.AreEqual(container.Items.Count, sqlContainer.Items.Count);
 }
 /// <summary>
 /// Asserts that the <paramref name="container"/> contains equivalent values from the <paramref name="sqlContainer"/>.
 /// </summary>
 /// <param name="sqlContainer">The container with expected values.</param>
 /// <param name="container">The container with actual values.</param>
 public static void AssertContainer(SqlContainer sqlContainer, Container container)
 {
     AssertContainer(sqlContainer, container, sqlContainer.Items.Count);
 }