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); });
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); }
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); }));
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); }
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); }
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(); }); }
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) }
public void ReadCorrectAmountOfEntry2() => File.OpenRead(FileName).Using(stream => { var ctd = Ctd.Read(stream); Assert.Equal(14, ctd.Layouts.Count); });
public void ReadCorrectAmountOfEntry1() => File.OpenRead(FileName).Using(stream => { var ctd = Ctd.Read(stream); Assert.Equal(41, ctd.Messages.Count); });