Пример #1
0
        public static void Test()
        {
            IEnumerable <GraphAndUI <NodeUIData> > nodes = Enumerable.Empty <GraphAndUI <NodeUIData> >();
            List <NodeGroup>               groups        = new List <NodeGroup>();
            MemoryStream                   rawData       = new MemoryStream();
            DocumentPath                   file          = DocumentPath.FromPath("DeleteMe.txt", new DirectoryInfo("."));
            ISerializer <TData>            serializer    = null;
            ReadOnlyCollection <LoadError> errors        = new ReadOnlyCollection <LoadError>(new List <LoadError>());
            INodeFactory                   nodeFactory   = null;
            GenerateAudio                  generateAudio = null;
            var source = new DynamicEnumParameter.Source();
            Func <IDynamicEnumParameter, object, DynamicEnumParameter.Source> getDocumentSource = (a, b) => source;
            IAudioLibrary audioProvider = new DummyAudioLibrary();

            List <List <ConversationNode> > states = new List <List <ConversationNode <INodeGui> > >
            {
                new List <ConversationNode>()
            };

            Random r = new Random(0);

            UpToDateFile.BackEnd backend = new UpToDateFile.BackEnd();
            var id = Id <FileInProject> .Parse("6a1bd06a-0028-4099-a375-475f1a5320db");

            using (ConversationFile conversationFile = new ConversationFile(id, nodes, groups, rawData, file, serializer, errors, nodeFactory, generateAudio, getDocumentSource, audioProvider, backend))
            {
                for (int i = 0; i < 10; i++)
                {
                    var node  = MakeNode();
                    var state = states[i].ToList();
                    state.Add(node);
                    conversationFile.Add(new[] { node }, Enumerable.Empty <NodeGroup>(), null);
                    CheckState(conversationFile, state);
                    states.Add(state);
                }

                Action <ConversationNode> CheckNode = node =>
                {
                    var connector = conversationFile.UIInfo(node.Data.Connectors.First(), false);
                    Assert.That(connector.Area.Value, Is.EqualTo(TopPosition(node.Renderer.Area)));
                };

                for (int n = 0; n < 10000; n++)
                {
                    var node = states.Last().Last();
                    node.Renderer.MoveTo(new PointF((float)r.NextDouble() * 1000, (float)r.NextDouble() * 1000));
                    CheckNode(node);
                }

                for (int i = 9; i >= 0; i--)
                {
                    conversationFile.UndoableFile.UndoQueue.Undo();
                    var state = states[i];
                    CheckState(conversationFile, state);
                }
                for (int i = 1; i <= 10; i++)
                {
                    conversationFile.UndoableFile.UndoQueue.Redo();
                    var state = states[i];
                    CheckState(conversationFile, state);
                }
            }
            Assert.Inconclusive();
        }