示例#1
0
        public void ReadStringCorrectly(int id, string expected) => File.OpenRead(FileName).Using(stream =>
        {
            var ctd = Ctd.Read(stream);
            var str = ctd.GetString(id);

            Assert.Equal(expected, str);
        });
示例#2
0
        public void CreateEmptyCtdWithoutNullValues()
        {
            var ctd = new Ctd();

            Assert.NotNull(ctd.Messages);
            Assert.NotNull(ctd.Layouts);
            Assert.Empty(ctd.Messages);
            Assert.Empty(ctd.Layouts);
            Assert.Equal(0, ctd.Unknown);
        }
示例#3
0
        public void WritesBackCorrectly() => File.OpenRead(FileName).Using(stream =>
                                                                           Helpers.AssertStream(stream, x =>
        {
            var ctd = Ctd.Read(stream);

            var outStream = new MemoryStream();
            ctd.Write(outStream);

            return(outStream);
        }));
示例#4
0
 public void IsValidTest()
 {
     using var stream = new MemoryStream();
     stream.WriteByte(0x40);
     stream.WriteByte(0x43);
     stream.WriteByte(0x54);
     stream.WriteByte(0x44);
     stream.Position = 0;
     Assert.True(Ctd.IsValid(stream));
 }
 private void AddContentType(string name, Ctd ctd)
 {
     if (name == typeof(ContentType).Name)
     {
         _contentTypeCtd = ctd;
     }
     else
     {
         _docs.Add(name, ctd);
     }
 }
        private void Install(Ctd ctd)
        {
            var contentType = ContentTypeManager.LoadOrCreateNew(ctd.Document);

            // skip notification during content type install to avoid missing field errors
            contentType.DisableObserver(TypeResolver.GetType(NodeObserverNames.NOTIFICATION, false));

            ContentTypeManager.ApplyChangesInEditor(contentType, _editor);
            contentType.Save(false);
            ContentTypeManager.Instance.AddContentType(contentType);
        }
示例#7
0
 public void IsNotValidTest()
 {
     using (var stream = new MemoryStream())
     {
         stream.WriteByte(1);
         stream.WriteByte(2);
         stream.WriteByte(3);
         stream.WriteByte(4);
         stream.Position = 0;
         Assert.False(Ctd.IsValid(stream));
     }
 }
        private void Install(Ctd ctd)
        {
            var contentType = ContentTypeManager.LoadOrCreateNew(ctd.Document);

            if (contentType.IsInvalid)
            {
                // registering a content type with an invalid handler or field is not allowed
                throw new ContentRegistrationException(
                          $"Error during installing content type {contentType.Name}. Please check the log for " +
                          "a registration error or warning.");
            }

            // skip notification during content type install to avoid missing field errors
            contentType.DisableObserver(TypeResolver.GetType(NodeObserverNames.NOTIFICATION, false));

            ContentTypeManager.ApplyChangesInEditor(contentType, _editor);
            contentType.Save(false);
            ContentTypeManager.Instance.AddContentType(contentType);
        }
示例#9
0
        public MessageViewModel(
            IDrawHandler drawHandler,
            Ctd ctd,
            Ctd.Message message)
        {
            _drawHandler = drawHandler;
            _ctd         = ctd;
            Message      = message;

            DrawHandler = new RelayCommand(_ =>
            {
                if (FontContext == null)
                {
                    return;
                }

                var layout = _ctd.Layouts[Message.LayoutIndex];
                _drawHandler.DrawHandler(CtdEncoders.International, FontContext, Message, layout);
                _drawHandler.DrawingContext.Flush();
            });
        }
示例#10
0
        public void ExecuteBatch()
        {
            // Install considering dependencies
            if (_contentTypeCtd != null)
            {
                Install(_contentTypeCtd);
            }

            List <Ctd>  docList = new List <Ctd>(_docs.Values);
            Stack <Ctd> stack   = new Stack <Ctd>();
            Ctd         parent  = null;

            while (docList.Count > 0)
            {
                Ctd doc = parent ?? docList[0];
                docList.Remove(doc);
                _docs.Remove(doc.Name);
                if (_docs.ContainsKey(doc.ParentName))
                {
                    stack.Push(doc);
                    parent = _docs[doc.ParentName];
                }
                else
                {
                    Install(doc);
                    while (stack.Count > 0)
                    {
                        Install(stack.Pop());
                    }
                    parent = null;
                }
            }
            _editor.Register();

            // The ContentTypeManager distributes its reset, no custom DistributedAction call needed
            ContentTypeManager.Reset(); // necessary (ExecuteBatch)
        }
示例#11
0
 public void ReadCorrectAmountOfEntry2() => File.OpenRead(FileName).Using(stream =>
 {
     var ctd = Ctd.Read(stream);
     Assert.Equal(14, ctd.Layouts.Count);
 });
示例#12
0
 public void ReadCorrectAmountOfEntry1() => File.OpenRead(FileName).Using(stream =>
 {
     var ctd = Ctd.Read(stream);
     Assert.Equal(41, ctd.Messages.Count);
 });