Ejemplo n.º 1
0
        public void InvalidBookmarkFormat()
        {
            string file = Path.Combine(Util.ArtifactsDataPath, "test053C.navm");
            Mock <IDjvuDocument> docMock = new Mock <IDjvuDocument>();
            List <IDjvuPage>     pages   = new List <IDjvuPage>();

            docMock.Setup(x => x.Pages).Returns(pages);
            for (int i = 0; i < 300; i++)
            {
                Mock <IDjvuPage> pageMock = new Mock <IDjvuPage>();
                pageMock.Setup(x => x.PageNumber).Returns(i + 1);
                pages.Add(pageMock.Object);
            }

            Mock <DjvuFormElement> parentMock = new Mock <DjvuFormElement> {
                CallBase = true
            };

            using (FileStream stream = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read))
                using (DjvuReader reader = new DjvuReader(stream))
                {
                    NavmChunk unk = new NavmChunk(reader, parentMock.Object, docMock.Object, "NAVM", stream.Length);
                    Assert.Equal <ChunkType>(ChunkType.Navm, unk.ChunkType);
                    Assert.Equal(stream.Length, unk.Length);

                    Assert.Throws <DjvuFormatException>(() => unk.Bookmarks);
                }
        }
Ejemplo n.º 2
0
        public void NavmChunk_Theory(string file)
        {
            Mock <IDjvuDocument> docMock = new Mock <IDjvuDocument>();
            List <IDjvuPage>     pages   = new List <IDjvuPage>();

            docMock.Setup(x => x.Pages).Returns(pages);
            for (int i = 0; i < 300; i++)
            {
                Mock <IDjvuPage> pageMock = new Mock <IDjvuPage>();
                pageMock.Setup(x => x.PageNumber).Returns(i + 1);
                pages.Add(pageMock.Object);
            }

            Mock <DjvuFormElement> parentMock = new Mock <DjvuFormElement> {
                CallBase = true
            };

            using (FileStream stream = new FileStream(file, FileMode.Open))
                using (DjvuReader reader = new DjvuReader(stream))
                {
                    NavmChunk unk = new NavmChunk(reader, parentMock.Object, docMock.Object, "NAVM", stream.Length);
                    Assert.Equal <ChunkType>(ChunkType.Navm, unk.ChunkType);
                    Assert.Equal(stream.Length, unk.Length);

                    var bookmarks = unk.Bookmarks;
                    Assert.NotNull(bookmarks);

                    foreach (var b in bookmarks)
                    {
                        Assert.NotNull(b.Children);
                    }
                }
        }
Ejemplo n.º 3
0
        public void NavmChunkTest()
        {
            Mock <IDjvuReader> readerMock = new Mock <IDjvuReader>();

            readerMock.Setup(x => x.Position).Returns(1024);

            NavmChunk unk = new NavmChunk(readerMock.Object, null, null, null, 0);

            Assert.Equal <ChunkType>(ChunkType.Navm, unk.ChunkType);
            Assert.Equal(ChunkType.Navm.ToString(), unk.Name);
            Assert.Equal <long>(1024, unk.DataOffset);
        }
Ejemplo n.º 4
0
        public void ReadDataTest()
        {
            Mock <IDjvuReader> readerMock = new Mock <IDjvuReader>();

            readerMock.SetupProperty <long>(x => x.Position);
            IDjvuReader reader = readerMock.Object;

            reader.Position = 1024;

            NavmChunk unk = new NavmChunk(readerMock.Object, null, null, null, 1024);

            Assert.Equal <ChunkType>(ChunkType.Navm, unk.ChunkType);
            Assert.Equal(ChunkType.Navm.ToString(), unk.Name);
            Assert.Equal <long>(1024, unk.DataOffset);

            unk.ReadData(reader);
            Assert.Equal <long>(2048, reader.Position);
        }
Ejemplo n.º 5
0
        public static IDjvuNode CreateEncodedDjvuNode(IDjvuWriter writer, IDjvuElement parent, ChunkType chunkType, long length)
        {
            IDjvuNode result = null;

            switch (chunkType)
            {
            case ChunkType.Djvm:
                result = new DjvmChunk(writer, parent, length);
                break;

            case ChunkType.Djvu:
                result = new DjvuChunk(writer, parent, length);
                break;

            case ChunkType.Djvi:
                result = new DjviChunk(writer, parent, length);
                break;

            case ChunkType.Thum:
                result = new ThumChunk(writer, parent, length);
                break;

            case ChunkType.Dirm:
                result = new DirmChunk(writer, parent, length);
                break;

            case ChunkType.Navm:
                result = new NavmChunk(writer, parent, length);
                break;

            case ChunkType.Anta:
                result = new AntaChunk(writer, parent, length);
                break;

            case ChunkType.Antz:
                result = new AntzChunk(writer, parent, length);
                break;

            case ChunkType.Txta:
                result = new TxtaChunk(writer, parent, length);
                break;

            case ChunkType.Txtz:
                result = new TxtzChunk(writer, parent, length);
                break;

            case ChunkType.Djbz:
                result = new DjbzChunk(writer, parent, length);
                break;

            case ChunkType.Sjbz:
                result = new SjbzChunk(writer, parent, length);
                break;

            case ChunkType.FG44:
                result = new FG44Chunk(writer, parent, length);
                break;

            case ChunkType.BG44:
                result = new BG44Chunk(writer, parent, length);
                break;

            case ChunkType.TH44:
                result = new TH44Chunk(writer, parent, length);
                break;

            case ChunkType.BM44:
                result = new BM44Chunk(writer, parent, length);
                break;

            case ChunkType.BM44Form:
                result = new BM44Form(writer, parent, length);
                break;

            case ChunkType.PM44:
                result = new PM44Chunk(writer, parent, length);
                break;

            case ChunkType.PM44Form:
                result = new PM44Form(writer, parent, length);
                break;

            case ChunkType.Wmrm:
                result = new WmrmChunk(writer, parent, length);
                break;

            case ChunkType.FGbz:
                result = new FGbzChunk(writer, parent, length);
                break;

            case ChunkType.Info:
                result = new InfoChunk(writer, parent, length);
                break;

            case ChunkType.Incl:
                result = new InclChunk(writer, parent, length);
                break;

            case ChunkType.BGjp:
                result = new BGjpChunk(writer, parent, length);
                break;

            case ChunkType.FGjp:
                result = new FGjpChunk(writer, parent, length);
                break;

            case ChunkType.Smmr:
                result = new SmmrChunk(writer, parent, length);
                break;

            default:
                throw new DjvuInvalidOperationException($"Chunk type is not supported in encoding. ChunkType: {chunkType}");
            }

            return(result);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Builds the appropriate chunk for the ID
        /// </summary>
        /// <returns></returns>
        public static IDjvuNode CreateDecodedDjvuNode(IDjvuReader reader, IDjvuDocument rootDocument,
                                                      IDjvuElement parent, ChunkType chunkType,
                                                      string chunkID = "", long length = 0)
        {
            IDjvuNode result = null;

            switch (chunkType)
            {
            case ChunkType.Djvm:
                result = new DjvmChunk(reader, parent, rootDocument, chunkID, length);
                break;

            case ChunkType.Djvu:
                result = new DjvuChunk(reader, parent, rootDocument, chunkID, length);
                break;

            case ChunkType.Djvi:
                result = new DjviChunk(reader, parent, rootDocument, chunkID, length);
                break;

            case ChunkType.Thum:
                result = new ThumChunk(reader, parent, rootDocument, chunkID, length);
                break;

            case ChunkType.Dirm:
                result = new DirmChunk(reader, parent, rootDocument, chunkID, length);
                break;

            case ChunkType.Navm:
                result = new NavmChunk(reader, parent, rootDocument, chunkID, length);
                break;

            case ChunkType.Anta:
                result = new AntaChunk(reader, parent, rootDocument, chunkID, length);
                break;

            case ChunkType.Antz:
                result = new AntzChunk(reader, parent, rootDocument, chunkID, length);
                break;

            case ChunkType.Txta:
                result = new TxtaChunk(reader, parent, rootDocument, chunkID, length);
                break;

            case ChunkType.Txtz:
                result = new TxtzChunk(reader, parent, rootDocument, chunkID, length);
                break;

            case ChunkType.Djbz:
                result = new DjbzChunk(reader, parent, rootDocument, chunkID, length);
                break;

            case ChunkType.Sjbz:
                result = new SjbzChunk(reader, parent, rootDocument, chunkID, length);
                break;

            case ChunkType.FG44:
                result = new FG44Chunk(reader, parent, rootDocument, chunkID, length);
                break;

            case ChunkType.BG44:
                result = new BG44Chunk(reader, parent, rootDocument, chunkID, length);
                break;

            case ChunkType.TH44:
                result = new TH44Chunk(reader, parent, rootDocument, chunkID, length);
                break;

            case ChunkType.BM44:
                result = new BM44Chunk(reader, parent, rootDocument, chunkID, length);
                break;

            case ChunkType.BM44Form:
                result = new BM44Form(reader, parent, rootDocument, chunkID, length);
                break;

            case ChunkType.PM44:
                result = new PM44Chunk(reader, parent, rootDocument, chunkID, length);
                break;

            case ChunkType.PM44Form:
                result = new PM44Form(reader, parent, rootDocument, chunkID, length);
                break;

            case ChunkType.Wmrm:
                result = new WmrmChunk(reader, parent, rootDocument, chunkID, length);
                break;

            case ChunkType.FGbz:
                result = new FGbzChunk(reader, parent, rootDocument, chunkID, length);
                break;

            case ChunkType.Info:
                result = new InfoChunk(reader, parent, rootDocument, chunkID, length);
                break;

            case ChunkType.Incl:
                result = new InclChunk(reader, parent, rootDocument, chunkID, length);
                break;

            case ChunkType.BGjp:
                result = new BGjpChunk(reader, parent, rootDocument, chunkID, length);
                break;

            case ChunkType.FGjp:
                result = new FGjpChunk(reader, parent, rootDocument, chunkID, length);
                break;

            case ChunkType.Smmr:
                result = new SmmrChunk(reader, parent, rootDocument, chunkID, length);
                break;

            case ChunkType.Cida:
                result = new CidaChunk(reader, parent, rootDocument, chunkID, length);
                break;

            default:
                result = new UnknownChunk(reader, parent, rootDocument, chunkID, length);
                break;
            }

            return(result);
        }