コード例 #1
0
        public void CanNotStartDialogueNodeInAnotherConversation()
        {
            RelayTwo relay = new RelayTwo();

            relay.CreateTable(DialogueNode.TABLE_NAME);
            DialogueRunner runner = new DialogueRunner(relay, Language.SWEDISH);

            TimedDialogueNode n1 = runner.Create <TimedDialogueNode>("Conversation1", Language.SWEDISH, "DialogueNode1");

            n1.nextNode = "DialogueNode2";
            n1.timer    = 1;

            runner.Create <TimedDialogueNode>("Conversation2", Language.SWEDISH, "DialogueNode2");
            n1.Start();

            string msg = null;

            D.onDLog += (pMessage) => {
                Console.WriteLine("DLog: " + pMessage);
                msg = pMessage;
            };

            runner.Update(1.0f);
            runner.Update(1.0f);
            Assert.NotNull(msg);
        }
コード例 #2
0
        public void MergeTwoSubsets()
        {
            RelayTwo relay = new RelayTwo();

            TableTwo table = relay.CreateTable("Table1");

            table.AddField <string>("name");
            table.AddField <bool>("1337");

            TableRow row1 = table.CreateRow();
            TableRow row2 = table.CreateRow();
            TableRow row3 = table.CreateRow();

            row1.Set("name", "Arne");
            row1.Set("1337", false);

            row2.Set("name", "Björn");
            row2.Set("1337", true);

            row3.Set("name", "Charlie");
            row3.Set("1337", false);

            Assert.AreEqual(3, table.GetRows().Length);

            RelayTwo subsetA = relay.Subset("Table1", (o => o.Get <bool>("1337") == true));
            RelayTwo subsetB = relay.Subset("Table1", (o => o.Get <bool>("1337") == false));

            subsetA.MergeWith(subsetB);
            Assert.Throws <RelayTwo.RelayMergeException>(() => subsetB.MergeWith(relay));
            Assert.AreEqual(true, subsetA.Equals(relay));
            Assert.AreEqual(false, subsetB.Equals(relay));
        }
コード例 #3
0
ファイル: DialogueRunnerTest.cs プロジェクト: substans/Grimm
        public void InstantiateDialoguesFromDatabase()
        {
            {
                RelayTwo relay = new RelayTwo();
                relay.CreateTable(DialogueNode.TABLE_NAME);
                DialogueRunner runner = new DialogueRunner(relay, Language.SWEDISH);

                TimedDialogueNode d1 = runner.Create<TimedDialogueNode>("c", Language.SWEDISH, "d1") as TimedDialogueNode;
                d1.speaker = "A";

                TimedDialogueNode d2 = runner.Create<TimedDialogueNode>("c", Language.SWEDISH, "d2");
                d2.speaker = "B";

                relay.SaveAll("conversation.xml");
            }

            {
                RelayTwo relay = new RelayTwo();
                relay.LoadAll("conversation.xml");
                DialogueRunner runner = new DialogueRunner(relay, Language.SWEDISH);

                TimedDialogueNode d1 = runner.GetDialogueNode("c", "d1") as TimedDialogueNode;
                TimedDialogueNode d2 = runner.GetDialogueNode("c", "d2") as TimedDialogueNode;

                Assert.AreEqual("A", d1.speaker);
                Assert.AreEqual("B", d2.speaker);
            }
        }
コード例 #4
0
        public void InstantiateDialoguesFromDatabase()
        {
            {
                RelayTwo relay = new RelayTwo();
                relay.CreateTable(DialogueNode.TABLE_NAME);
                DialogueRunner runner = new DialogueRunner(relay, Language.SWEDISH);

                TimedDialogueNode d1 = runner.Create <TimedDialogueNode>("c", Language.SWEDISH, "d1") as TimedDialogueNode;
                d1.speaker = "A";

                TimedDialogueNode d2 = runner.Create <TimedDialogueNode>("c", Language.SWEDISH, "d2");
                d2.speaker = "B";

                relay.SaveAll("conversation.xml");
            }

            {
                RelayTwo relay = new RelayTwo();
                relay.LoadAll("conversation.xml");
                DialogueRunner runner = new DialogueRunner(relay, Language.SWEDISH);

                TimedDialogueNode d1 = runner.GetDialogueNode("c", "d1") as TimedDialogueNode;
                TimedDialogueNode d2 = runner.GetDialogueNode("c", "d2") as TimedDialogueNode;

                Assert.AreEqual("A", d1.speaker);
                Assert.AreEqual("B", d2.speaker);
            }
        }
コード例 #5
0
        public void InstantiateFromDatabase()
        {
            RelayTwo relay = new RelayTwo();
            TableTwo table = relay.CreateTable(Ting.TABLE_NAME);

            relay.CreateTable(Room.TABLE_NAME);
            table.AddField <string>(RelayObjectTwo.CSHARP_CLASS_FIELD_NAME);
            table.AddField <string>("species");
            table.AddField <string>("name");
            table.AddField <int>("age");
            int row0 = table.CreateRow().row;
            int row1 = table.CreateRow().row;


            table.SetValue(row0, RelayObjectTwo.CSHARP_CLASS_FIELD_NAME, "Animal");
            table.SetValue(row0, "species", "Monkey");
            table.SetValue(row0, "name", "Herr Nilsson");
            table.SetValue(row0, "age", 78);

            table.SetValue(row1, RelayObjectTwo.CSHARP_CLASS_FIELD_NAME, "Animal");
            table.SetValue(row1, "species", "Horse");
            table.SetValue(row1, "name", "Lilla Gubben");
            table.SetValue(row1, "age", 50);

            TingRunner tingRunner = new TingRunner(relay, new RoomRunner(relay));

            Animal herrNilsson = tingRunner.GetTing("Herr Nilsson") as Animal;
            Animal lillaGubben = tingRunner.GetTing("Lilla Gubben") as Animal;

            Assert.IsNotNull(herrNilsson);
            Assert.IsNotNull(lillaGubben);
            Assert.AreEqual(78, herrNilsson.age);
            Assert.AreEqual(50, lillaGubben.age);
        }
コード例 #6
0
        public IEnumerable <float> LoadRelayFromDirectory(string pInputDirectory, bool pOnlyLoadTingsAndRooms)
        {
#if PROFILE
            Stopwatch sw = new Stopwatch();
            sw.Start();
#endif

            _relay = CreateEmptyRelay();
            DialogueRunner dialogueRunner = new DialogueRunner(_relay, Language.DEFAULT);
            _dialogueScriptLoader = new DialogueScriptLoader(dialogueRunner);
            _sourceCodeDispenser  = new SourceCodeDispenser(_relay);
            _timetableRunner      = new TimetableRunner(_relay);

            string[] files = GetFilesRecursively(pInputDirectory);

            for (int i = 0; i < files.Length; i++)
            {
                FoundFile(files[i], pOnlyLoadTingsAndRooms);
                yield return((float)i / (float)files.Length);
            }

#if PROFILE
            sw.Stop();
            logger.Log("Loading relay from directory " + pInputDirectory + " took " + sw.Elapsed.TotalSeconds + " s.");
#endif
        }
コード例 #7
0
ファイル: TingRunnerTest.cs プロジェクト: substans/TingTing
        public void InstantiateFromDatabase()
        {
            RelayTwo relay = new RelayTwo();
            TableTwo table = relay.CreateTable(Ting.TABLE_NAME);
            relay.CreateTable(Room.TABLE_NAME);
            table.AddField<string>(RelayObjectTwo.CSHARP_CLASS_FIELD_NAME);
            table.AddField<string>("species");
            table.AddField<string>("name");
            table.AddField<int>("age");
            int row0 = table.CreateRow().row;
            int row1 = table.CreateRow().row;

            table.SetValue(row0, RelayObjectTwo.CSHARP_CLASS_FIELD_NAME, "Animal");
            table.SetValue(row0, "species", "Monkey");
            table.SetValue(row0, "name", "Herr Nilsson");
            table.SetValue(row0, "age", 78);

            table.SetValue(row1, RelayObjectTwo.CSHARP_CLASS_FIELD_NAME, "Animal");
            table.SetValue(row1, "species", "Horse");
            table.SetValue(row1, "name", "Lilla Gubben");
            table.SetValue(row1, "age", 50);

            TingRunner tingRunner = new TingRunner(relay, new RoomRunner(relay));

            Animal herrNilsson = tingRunner.GetTing("Herr Nilsson") as Animal;
            Animal lillaGubben = tingRunner.GetTing("Lilla Gubben") as Animal;

            Assert.IsNotNull(herrNilsson);
            Assert.IsNotNull(lillaGubben);
            Assert.AreEqual(78, herrNilsson.age);
            Assert.AreEqual(50, lillaGubben.age);
        }
コード例 #8
0
ファイル: TingRunner.cs プロジェクト: substans/TingTing
        public TingRunner(RelayTwo pRelay, RoomRunner pRoomRunner)
        {
            D.isNull(pRelay);
            D.isNull(pRoomRunner);

            _roomRunner = pRoomRunner;
            _relay      = pRelay;

            Type[]      classes    = InstantiatorTwo.GetSubclasses(typeof(Ting));
            List <Ting> tingsToAdd = new List <Ting>();

            foreach (Type t in classes)
            {
                TableTwo table = AssertTable(t, pRelay);

                if (!_loadedTingTables.ContainsKey(table.name))
                {
                    //Console.WriteLine("Adding table " + table.name + " for type " + t.Name);
                    tingsToAdd.AddRange(InstantiatorTwo.Process <Ting>(table));
                    _loadedTingTables.Add(table.name, table);
                }
            }

            foreach (Ting t in tingsToAdd)
            {
                AddTing(t);
                t.SetupBaseRunners(this, _roomRunner);
            }

            actionTime = 0;
        }
コード例 #9
0
        public void CompileAndRun()
        {
            GameTypes.D.onDLog += Console.WriteLine;

            output = new List<string>();

            RelayTwo relay = new RelayTwo();
            TableTwo programsTable = relay.CreateTable(Program.TABLE_NAME);

            FunctionDefinition print = new FunctionDefinition("void", "print", new string[] { "string" }, new string[] { "s" }, API_print, FunctionDocumentation.Default());

            Program p1 = new Program();
            p1.CreateNewRelayEntry(programsTable, "Program");
            p1.Init(new ProgramRunner(relay));
            p1.sourceCodeContent = "print(42)";
            p1.FunctionDefinitions.Add(print);
            p1.Compile();
            Assert.AreEqual(0, p1.GetErrors().Length);

            for(int i = 0; i < 100; i++) {
                if(p1.sprakRunner.interpreter != null) {
                    p1.Update(0.1f);
                }
            }

            Assert.AreEqual(1, output.Count);
            Assert.AreEqual("42", output[0]);
        }
コード例 #10
0
        public void AssertCommando()
        {
            _lines = new List<string>();

            s_pooWasCalledCorrectly = false;

            RelayTwo relay = new RelayTwo();
            relay.CreateTable(DialogueNode.TABLE_NAME);

            DialogueRunner dialogueRunner = new DialogueRunner(relay, Language.DEFAULT);
            dialogueRunner.AddOnSomeoneSaidSomethingListener(OnSomeoneSaidSomething);
            dialogueRunner.AddExpression("Pass", Pass);
            dialogueRunner.AddExpression("Fail", Fail);

            DialogueScriptLoader scriptLoader = new DialogueScriptLoader(dialogueRunner);
            scriptLoader.LoadDialogueNodesFromFile("../conversations/conversation16.dia");

            DialogueScriptPrinter scriptPrinter = new DialogueScriptPrinter(dialogueRunner);
            scriptPrinter.PrintConversation("conversation16");

            Assert.Throws<GrimmAssertException>(() => {
                dialogueRunner.StartConversation("conversation16");
                for(int i = 0; i < 100; i++)
                {
                    dialogueRunner.Update(1.0f);
                }
            });

            Assert.AreEqual(4, _lines.Count);
            Assert.AreEqual("hej1", _lines[0]);
            Assert.AreEqual("", _lines[1]);
            Assert.AreEqual("hej2", _lines[2]);
            Assert.AreEqual("", _lines[3]);
        }
コード例 #11
0
ファイル: ProgramTest.cs プロジェクト: defc0n1/GameWorld2
        public void CompileAndRun()
        {
            GameTypes.D.onDLog += Console.WriteLine;

            output = new List <string>();

            RelayTwo relay         = new RelayTwo();
            TableTwo programsTable = relay.CreateTable(Program.TABLE_NAME);

            FunctionDefinition print = new FunctionDefinition("void", "print", new string[] { "string" }, new string[] { "s" }, API_print, FunctionDocumentation.Default());

            Program p1 = new Program();

            p1.CreateNewRelayEntry(programsTable, "Program");
            p1.Init(new ProgramRunner(relay));
            p1.sourceCodeContent = "print(42)";
            p1.FunctionDefinitions.Add(print);
            p1.Compile();
            Assert.AreEqual(0, p1.GetErrors().Length);

            for (int i = 0; i < 100; i++)
            {
                if (p1.sprakRunner.interpreter != null)
                {
                    p1.Update(0.1f);
                }
            }

            Assert.AreEqual(1, output.Count);
            Assert.AreEqual("42", output[0]);
        }
コード例 #12
0
        public void SetupTingsThenSaveAndLoadFromDisk()
        {
            {
                TingRunner tingRunner = CreateTingRunnerWithSomeRoom();

                Animal bo = tingRunner.CreateTing <Animal>("Bo", new WorldCoordinate("SomeRoom", IntPoint.Zero));
                bo.species = "cow";
                bo.age     = 10;
                Animal howly = tingRunner.CreateTing <Animal>("Howly", new WorldCoordinate("SomeRoom", IntPoint.Zero));
                howly.species = "owl";

                Assert.AreEqual("cow", bo.species);
                Assert.AreEqual(10, bo.age);
                Assert.AreEqual("owl", howly.species);
                Assert.AreEqual(0, howly.age); // <- default value

                howly.age = 35;

                relay.SaveAll("farm.json");
            }

            {
                relay = new RelayTwo();
                relay.LoadAll("farm.json");
                TingRunner tingRunner = new TingRunner(relay, new RoomRunner(relay));

                Animal bo    = tingRunner.GetTing("Bo") as Animal;
                Animal howly = tingRunner.GetTing("Howly") as Animal;

                Assert.AreEqual("cow", bo.species);
                Assert.AreEqual(10, bo.age);
                Assert.AreEqual("owl", howly.species);
                Assert.AreEqual(35, howly.age);
            }
        }
コード例 #13
0
        //, TingRunner pTingRunner)
        public TimetableRunner(RelayTwo pRelay)
        {
            _timetableTable = pRelay.GetTable(Timetable.TABLE_NAME);

            foreach(var timetable in InstantiatorTwo.Process<Timetable>(_timetableTable)) {
                _timetables[timetable.name] = timetable;
            }
        }
コード例 #14
0
        public void DontTriggerEventOnWaitingNodeUnlessEventHappensWhenExpressionIsTrue()
        {
            RelayTwo relay = new RelayTwo();
            relay.CreateTable(DialogueNode.TABLE_NAME);
            DialogueRunner runner = new DialogueRunner(relay, Language.SWEDISH);

            runner.logger.AddListener (msg => Console.WriteLine ("Dialog runner log: " + msg));

            bool sunny = false;

            runner.AddExpression ("IsSunny", new DialogueRunner.Expression (args => {
                return sunny;
            }));

            var expression = runner.Create<ExpressionDialogueNode>("Conversation1", Language.SWEDISH, "ExpressionNode");
            expression.expression = "IsSunny";
            expression.args = new string[] { };

            var waitNode = runner.Create<WaitDialogueNode>("Conversation1", Language.SWEDISH, "WaitNode");
            waitNode.eventName = "bam!";
            waitNode.expressions = new ExpressionDialogueNode[] {
                expression
            };

            var start = runner.Create<ConversationStartDialogueNode>("Conversation1", Language.SWEDISH, "Start");
            var end = runner.Create<ConversationEndDialogueNode>("Conversation1", Language.SWEDISH, "End");

            start.nextNode = waitNode.name;
            waitNode.nextNode = end.name;

            runner.StartConversation ("Conversation1");
            runner.Update (0.1f);
            runner.Update (0.1f);
            runner.Update (0.1f);
            Assert.IsTrue (waitNode.isOn);
            Assert.IsTrue (runner.ConversationIsRunning("Conversation1"));

            // Event should not occur since it's not sunny yet
            runner.EventHappened("bam!");
            runner.Update (0.1f);
            Assert.IsTrue (waitNode.isOn);
            Assert.IsTrue (runner.ConversationIsRunning("Conversation1"));

            sunny = true;

            // Now, even though it's sunny the event should still not happen since we're not bam!:ing
            runner.Update (0.1f);
            Assert.IsTrue (waitNode.isOn);
            Assert.IsTrue (runner.ConversationIsRunning("Conversation1"));

            // But if the bam! event happens while sunny, the conversation should end
            runner.EventHappened("bam!");
            runner.Update (0.1f);
            runner.Update (0.1f);
            runner.Update (0.1f);
            Assert.IsFalse (waitNode.isOn);
            Assert.IsFalse (runner.ConversationIsRunning("Conversation1"));
        }
コード例 #15
0
ファイル: Main.cs プロジェクト: eriksvedang/Grimm
        static void RunDialogue()
        {
            string conversationName = "meeting"; // "PixieMeeting1";

            RelayTwo relay;
            DialogueRunner dialogueRunner;

            relay = new RelayTwo();
            relay.CreateTable(DialogueNode.TABLE_NAME);

            dialogueRunner = new DialogueRunner(relay, Language.DEFAULT);
            dialogueRunner.AddExpression("CoinFlip", CoinFlip);
            dialogueRunner.AddOnSomeoneSaidSomethingListener(OnSpeech);
            dialogueRunner.logger.AddListener(Log);

            DialogueScriptLoader scriptLoader = new DialogueScriptLoader(dialogueRunner);
            scriptLoader.LoadDialogueNodesFromFile(conversationName + ".dia");

            DialogueScriptPrinter printer = new DialogueScriptPrinter(dialogueRunner);
            printer.PrintConversation(conversationName);

            Console.WriteLine(" - " + conversationName + " - ");
            dialogueRunner.StartConversation(conversationName);

            while(dialogueRunner.ConversationIsRunning(conversationName))
            {
                //printer.PrintConversation(conversationName);

                dialogueRunner.Update(1.0f);
                DialogueNode activeDialogueNode = dialogueRunner.GetActiveBranchingDialogueNode(conversationName);
                if(activeDialogueNode is BranchingDialogueNode)
                {
                    BranchingDialogueNode branchingNode = activeDialogueNode as BranchingDialogueNode;

                    //printer.PrintConversation(conversationName);

                    int i = 1;
                    Console.WriteLine("Choose an alternative:");
                    foreach(string optionNodeName in branchingNode.nextNodes)
                    {
                        TimedDialogueNode optionNode = dialogueRunner.GetDialogueNode(conversationName, optionNodeName) as TimedDialogueNode;
                        Console.WriteLine(i++ + ". " + optionNode.line);
                    }

                    int choice = -1;
                    while(choice < 0 || choice > branchingNode.nextNodes.Length - 1) {
                        try {
                            choice = 0; //Convert.ToInt32(Console.ReadLine()) - 1;
                        }
                        catch {
                            choice = -1;
                        }
                    }

                    branchingNode.Choose(choice);
                }
            }
        }
コード例 #16
0
 void AssertThatCanFindAllTables(RelayTwo pRelay)
 {
     Assert.IsNotNull(pRelay.GetTable(Ting.TABLE_NAME));
     Assert.IsNotNull(pRelay.GetTable(Room.TABLE_NAME));
     Assert.IsNotNull(pRelay.GetTable(DialogueNode.TABLE_NAME));
     Assert.IsNotNull(pRelay.GetTable(SourceCode.TABLE_NAME));
     Assert.IsNotNull(pRelay.GetTable(Program.TABLE_NAME));
     Assert.IsNotNull(pRelay.GetTable(WorldSettings.TABLE_NAME));
 }
コード例 #17
0
 void AssertThatCanFindAllTables(RelayTwo pRelay)
 {
     Assert.IsNotNull(pRelay.GetTable(Ting.TABLE_NAME));
     Assert.IsNotNull(pRelay.GetTable(Room.TABLE_NAME));
     Assert.IsNotNull(pRelay.GetTable(DialogueNode.TABLE_NAME));
     Assert.IsNotNull(pRelay.GetTable(SourceCode.TABLE_NAME));
     Assert.IsNotNull(pRelay.GetTable(Program.TABLE_NAME));
     Assert.IsNotNull(pRelay.GetTable(WorldSettings.TABLE_NAME));
 }
コード例 #18
0
ファイル: TimetableRunner.cs プロジェクト: defc0n1/GameWorld2
        public TimetableRunner(RelayTwo pRelay)         //, TingRunner pTingRunner)
        {
            _timetableTable = pRelay.GetTable(Timetable.TABLE_NAME);

            foreach (var timetable in InstantiatorTwo.Process <Timetable>(_timetableTable))
            {
                _timetables[timetable.name] = timetable;
            }
        }
コード例 #19
0
 public SourceCodeDispenser(RelayTwo pRelay)
 {
     _sourceCodeTable = pRelay.GetTable(SourceCode.TABLE_NAME);
     //Console.WriteLine("Getting source code from " + _sourceCodeTable.name);
     _sourceCodes = InstantiatorTwo.Process <SourceCode>(_sourceCodeTable);
     foreach (SourceCode sc in _sourceCodes)
     {
         //Console.WriteLine("found source code " + sc.name);
     }
 }
コード例 #20
0
 public SourceCodeDispenser(RelayTwo pRelay)
 {
     _sourceCodeTable = pRelay.GetTable(SourceCode.TABLE_NAME);
     //Console.WriteLine("Getting source code from " + _sourceCodeTable.name);
     _sourceCodes = InstantiatorTwo.Process<SourceCode>(_sourceCodeTable);
     foreach (SourceCode sc in _sourceCodes)
     {
         //Console.WriteLine("found source code " + sc.name);
     }
 }
コード例 #21
0
ファイル: TingRunner.cs プロジェクト: substans/TingTing
        private TableTwo AssertTable(Type t, RelayTwo pRelay)
        {
            string tableName = GetTableName(t);

            if (!pRelay.tables.ContainsKey(tableName))
            {
                pRelay.CreateTable(tableName);
            }
            return(pRelay.tables[tableName]);
        }
コード例 #22
0
 public ProgramRunner(RelayTwo pRelay)
 {
     D.isNull(pRelay);
     _programTable = pRelay.GetTable(Program.TABLE_NAME);
     _programsList = InstantiatorTwo.Process<Program>(_programTable);
     foreach (var program in _programsList) {
         program.Init(this);
         _programsDictionary.Add(program.objectId, program);
     }
 }
コード例 #23
0
        public void CreateAndSaveEmptyRelay()
        {
            InitialSaveFileCreator i = new InitialSaveFileCreator();
            RelayTwo emptyRelay      = i.CreateEmptyRelay();

            AssertThatCanFindAllTables(emptyRelay);
            emptyRelay.SaveAll("empty.json");
            emptyRelay.tables.Clear();
            emptyRelay.LoadAll("empty.json");
            AssertThatCanFindAllTables(emptyRelay);
        }
コード例 #24
0
        public void CompileWithError()
        {
            RelayTwo relay = new RelayTwo();
            TableTwo programsTable = relay.CreateTable(Program.TABLE_NAME);

            Program p1 = new Program();
            p1.CreateNewRelayEntry(programsTable, "Program");
            p1.sourceCodeContent = "var x = ";
            p1.Compile();
            Assert.AreEqual(1, p1.GetErrors().Length);
        }
コード例 #25
0
 public ProgramRunner(RelayTwo pRelay)
 {
     D.isNull(pRelay);
     _programTable = pRelay.GetTable(Program.TABLE_NAME);
     _programsList = InstantiatorTwo.Process <Program>(_programTable);
     foreach (var program in _programsList)
     {
         program.Init(this);
         _programsDictionary.Add(program.objectId, program);
     }
 }
コード例 #26
0
        public void MergeSavesWithDifferentFields()
        {
            {
                RelayTwo relay = new RelayTwo();

                TableTwo table = relay.CreateTable("Table");

                table.AddField <string>("oldField");

                TableRow row1 = table.CreateRow();
                TableRow row2 = table.CreateRow();
                TableRow row3 = table.CreateRow();

                row1.Set("oldField", "kottar");
                row2.Set("oldField", "stenar");
                row3.Set("oldField", "gräs");

                relay.Subset("Table", (o => o.row == 0)).SaveAll("s0.json");
                relay.Subset("Table", (o => o.row == 1)).SaveAll("s1.json");
                relay.Subset("Table", (o => o.row == 2)).SaveAll("s2.json");

                table.AddField <int>("newField");

                TableRow row4 = table.CreateRow();
                TableRow row5 = table.CreateRow();

                row4.Set("newField", 500);
                row5.Set("newField", 1000);

                relay.Subset("Table", (o => o.row == 3)).SaveAll("s3.json");
                relay.Subset("Table", (o => o.row == 4)).SaveAll("s4.json");
            }
            {
                RelayTwo relay = new RelayTwo();

                relay.MergeWith(new RelayTwo("s4.json"));
                relay.MergeWith(new RelayTwo("s0.json"));
                relay.MergeWith(new RelayTwo("s1.json"));
                relay.MergeWith(new RelayTwo("s2.json"));
                relay.MergeWith(new RelayTwo("s3.json"));


                TableTwo table = relay.GetTable("Table");
                Assert.AreEqual(5, table.GetRows().Length);

                Assert.AreEqual("kottar", table.GetRow(0).Get <string>("oldField"));
                Assert.AreEqual("stenar", table.GetRow(1).Get <string>("oldField"));
                Assert.AreEqual("gräs", table.GetRow(2).Get <string>("oldField"));

                Assert.AreEqual(500, table.GetRow(3).Get <int>("newField"));
                Assert.AreEqual(1000, table.GetRow(4).Get <int>("newField"));
            }
        }
コード例 #27
0
        TingRunner CreateTingRunnerWithSomeRoom()
        {
            relay = new RelayTwo();
            relay.CreateTable(Ting.TABLE_NAME);
            relay.CreateTable(Room.TABLE_NAME);
            RoomRunner rr = new RoomRunner(relay);

            rr.CreateRoom <Room>("SomeRoom");
            TingRunner tingRunner = new TingRunner(relay, rr);

            return(tingRunner);
        }
コード例 #28
0
ファイル: DialogueRunnerTest.cs プロジェクト: cyberis/Grimm
        public void CreateTimedDialogueNode()
        {
            RelayTwo relay = new RelayTwo();
            TableTwo table = relay.CreateTable(DialogueNode.TABLE_NAME);

            TimedDialogueNode t = new TimedDialogueNode();
            t.CreateNewRelayEntry(table, "TimedDialogueNode");
            t.timer = 100;
            t.Update(1.0f);

            Assert.AreEqual(99, t.timer, 0.001f);
        }
コード例 #29
0
ファイル: ProgramTest.cs プロジェクト: defc0n1/GameWorld2
        public void CompileWithError()
        {
            RelayTwo relay         = new RelayTwo();
            TableTwo programsTable = relay.CreateTable(Program.TABLE_NAME);

            Program p1 = new Program();

            p1.CreateNewRelayEntry(programsTable, "Program");
            p1.sourceCodeContent = "var x = ";
            p1.Compile();
            Assert.AreEqual(1, p1.GetErrors().Length);
        }
コード例 #30
0
ファイル: RoomTest.cs プロジェクト: substans/TingTing
        public void CreateRoomsWithDuplicateNames()
        {
            RelayTwo relay = new RelayTwo();

            relay.CreateTable(Room.TABLE_NAME);
            RoomRunner roomRunner = new RoomRunner(relay);

            roomRunner.CreateRoom <Room>("Hallway");
            Assert.Throws <TingTingException>(() => {
                roomRunner.CreateRoom <Room>("Hallway");
            });
        }
コード例 #31
0
ファイル: RoomTest.cs プロジェクト: eriksvedang/TingTing
		public void BasicUsage()
		{
			{
				RelayTwo relay = new RelayTwo();
				relay.CreateTable(Room.TABLE_NAME);
				RoomRunner roomRunner = new RoomRunner(relay);
                foreach (string s in roomRunner.Preload()) ;

				Room r1 = roomRunner.CreateRoom<Room>("r1");

                PointTileNode door1 = null;
				
				for(int i = 0; i < 100; i++)
				{
					int x = i % 10;
					int y = i / 10;
					
					if(x == 9 && y == 9) {
                        door1 = new PointTileNode(new IntPoint(9, 9), r1);
                        r1.AddTile(door1);
					}
					else {
                        r1.AddTile(new PointTileNode(new IntPoint(x, y), r1 ));
					}
				}

				r1.worldPosition = new IntPoint(50, 0);

				relay.SaveAll("room_test.json");
			}
			
			{
                RelayTwo relay = new RelayTwo("room_test.json");
				RoomRunner roomRunner = new RoomRunner(relay);
                foreach (string s in roomRunner.Preload()) ;
				Room r1 = roomRunner.GetRoom("r1");

				PointTileNode start = r1.GetTile(new IntPoint(0, 5));
				PointTileNode goal = r1.GetTile(new IntPoint(9, 5));
				
				D.isNull(start);
				D.isNull(goal);
				
				PathSolver pathSolver = new PathSolver();
				Path path = pathSolver.FindPath(start, goal, roomRunner, true);
                
				Console.WriteLine("path resolved using " + path.pathSearchTestCount + " node tests");
                Console.WriteLine("path tile count " + path.nodes.Length);

				Assert.AreEqual(PathStatus.FOUND_GOAL, path.status);
			}
		}
コード例 #32
0
        public void CreateTimedDialogueNode()
        {
            RelayTwo relay = new RelayTwo();
            TableTwo table = relay.CreateTable(DialogueNode.TABLE_NAME);

            TimedDialogueNode t = new TimedDialogueNode();

            t.CreateNewRelayEntry(table, "TimedDialogueNode");
            t.timer = 100;
            t.Update(1.0f);

            Assert.AreEqual(99, t.timer, 0.001f);
        }
コード例 #33
0
        public void TryingToGetTingWithWrongName()
        {
            RelayTwo relay = new RelayTwo();

            relay.CreateTable(Ting.TABLE_NAME);
            relay.CreateTable(Room.TABLE_NAME);
            TingRunner tingRunner = new TingRunner(relay, new RoomRunner(relay));

            Assert.Throws <CantFindTingException>(() =>
            {
                tingRunner.GetTing("wrong ting name");
            });
        }
コード例 #34
0
        public void TryingToInstantiateNonexistingClass()
        {
            RelayTwo relay = new RelayTwo();
            TableTwo table = relay.CreateTable(Ting.TABLE_NAME);

            relay.CreateTable(Room.TABLE_NAME);
            table.AddField <string>(RelayObjectTwo.CSHARP_CLASS_FIELD_NAME);
            table.CreateRow().Set(RelayObjectTwo.CSHARP_CLASS_FIELD_NAME, "invalid class name");
            Assert.Throws <CantFindClassWithNameException>(() =>
            {
                new TingRunner(relay, new RoomRunner(relay));
            });
        }
コード例 #35
0
        public void GetListOfRowIdsInTable()
        {
            RelayTwo relay = new RelayTwo();
            TableTwo table = relay.CreateTable("Table");

            table.CreateRow();
            table.CreateRow();
            table.CreateRow();

            int[] allObjectIds = table.GetIndexesOfPopulatedRows();

            Assert.AreEqual(3, allObjectIds.Length);
            CollectionAssert.AllItemsAreUnique(allObjectIds);
        }
コード例 #36
0
        public RelayTwo CreateEmptyRelay()
        {
            RelayTwo relay = new RelayTwo();

            relay.CreateTable(Ting.TABLE_NAME);
            relay.CreateTable(Room.TABLE_NAME);
            relay.CreateTable(DialogueNode.TABLE_NAME);
            relay.CreateTable(SourceCode.TABLE_NAME);
            relay.CreateTable(Program.TABLE_NAME);
            relay.CreateTable(WorldSettings.TABLE_NAME);
            relay.CreateTable(Timetable.TABLE_NAME);

            return(relay);
        }
コード例 #37
0
ファイル: Main.cs プロジェクト: substans/TingTing
 private static void UsingNormalAccessor()
 {
     RelayTwo relay = new RelayTwo();
     relay.CreateTable(Ting.TABLE_NAME);
     TingRunner tingRunner = new TingRunner(relay, new RoomRunner(relay));
     TestTing2UsingNormalAccessor t = tingRunner.CreateTing<TestTing2UsingNormalAccessor>("TestTing", WorldCoordinate.NONE);
     Console.WriteLine("Using class " + t.ToString());
     for(int i = 0; i < COUNTER; i++)
     {
         float a = t.awesome;
         a += 1.0f;
         t.awesome = a;
     }
     Console.WriteLine("2. awesome = " + t.awesome);
 }
コード例 #38
0
ファイル: Main.cs プロジェクト: substans/TingTing
 private static void UsingCellId()
 {
     RelayTwo relay = new RelayTwo();
     relay.CreateTable(Ting.TABLE_NAME);
     TingRunner tingRunner = new TingRunner(relay, new RoomRunner(relay));
     TestTing1UsingCellIdWithConvenienceFunctions t = tingRunner.CreateTing<TestTing1UsingCellIdWithConvenienceFunctions>("TestTing", WorldCoordinate.NONE);
     Console.WriteLine("Using class " + t.ToString());
     for(int i = 0; i < COUNTER; i++)
     {
         float a = t.awesome;
         a += 1.0f;
         t.awesome = a;
     }
     Console.WriteLine("1. awesome = " + t.awesome);
 }
コード例 #39
0
        public void MergeSaves()
        {
            {
                RelayTwo relay = new RelayTwo();

                TableTwo table = relay.CreateTable("Table");

                table.AddField <string>("name");

                TableRow row1 = table.CreateRow();
                TableRow row2 = table.CreateRow();
                TableRow row3 = table.CreateRow();

                row1.Set("name", "a");
                row2.Set("name", "b");
                row3.Set("name", "c");

                Assert.AreEqual(3, table.GetRows().Length);
                Assert.AreEqual("a", table.GetRow(0).Get <string>("name"));
                Assert.AreEqual("b", table.GetRow(1).Get <string>("name"));
                Assert.AreEqual("c", table.GetRow(2).Get <string>("name"));

                RelayTwo save1 = relay.Subset("Table", (o => o.Get <string>("name") == "a"));
                RelayTwo save2 = relay.Subset("Table", (o => o.Get <string>("name") == "b"));
                RelayTwo save3 = relay.Subset("Table", (o => o.Get <string>("name") == "c"));

                Assert.AreEqual(1, save1.GetTable("Table").GetRows().Length);
                Assert.AreEqual(1, save2.GetTable("Table").GetRows().Length);
                Assert.AreEqual(1, save3.GetTable("Table").GetRows().Length);

                save1.SaveAll("PartialSave1.json");
                save2.SaveAll("PartialSave2.json");
                save3.SaveAll("PartialSave3.json");
            }
            {
                RelayTwo relay = new RelayTwo();
                relay.MergeWith(new RelayTwo("PartialSave1.json"));
                relay.MergeWith(new RelayTwo("PartialSave2.json"));
                relay.MergeWith(new RelayTwo("PartialSave3.json"));

                TableTwo table = relay.GetTable("Table");
                Assert.AreEqual(3, table.GetRows().Length);

                Assert.AreEqual("a", table.GetRow(0).Get <string>("name"));
                Assert.AreEqual("b", table.GetRow(1).Get <string>("name"));
                Assert.AreEqual("c", table.GetRow(2).Get <string>("name"));
            }
        }
コード例 #40
0
        public RelayTwo CreateRelay(string pInputDirectory, bool pOnlyLoadTingsAndRooms)
        {
            _relay = CreateEmptyRelay();
            DialogueRunner dialogueRunner = new DialogueRunner(_relay, Language.DEFAULT);

            _dialogueScriptLoader = new DialogueScriptLoader(dialogueRunner);
            _sourceCodeDispenser  = new SourceCodeDispenser(_relay);
            _timetableRunner      = new TimetableRunner(_relay);

            foreach (string s in GetFilesRecursively(pInputDirectory))
            {
                FoundFile(s, pOnlyLoadTingsAndRooms);
            }

            return(_relay);
        }
コード例 #41
0
ファイル: World.cs プロジェクト: KarmaLaBelle/GameWorld2
		private void Init(RelayTwo pRelay)
        {
			paused = false;
			isReadyToPlay = false;
			relay = pRelay;
			dialogueRunner = new DialogueRunner(relay, Language.DEFAULT);
			roomRunner = new RoomRunner(relay);
			programRunner = new ProgramRunner(relay);
			sourceCodeDispenser = new SourceCodeDispenser(relay);
			timetableRunner = new TimetableRunner(relay);
			settings = new WorldSettings(relay);
            tingRunner = new MimanTingRunner(relay, dialogueRunner, programRunner, sourceCodeDispenser, roomRunner, timetableRunner, settings);
			grimmApiDefinitions = new MimanGrimmApiDefinitions(this);
			grimmApiDefinitions.RegisterFunctions();
			grimmApiDefinitions.RegisterExpressions();
			translator = new Translator (Translator.Language.SWEDISH);
		}
コード例 #42
0
ファイル: DialogueRunnerTest.cs プロジェクト: substans/Grimm
        public void CanNotStartDialogueNodeInAnotherConversation()
        {
            RelayTwo relay = new RelayTwo();
            relay.CreateTable(DialogueNode.TABLE_NAME);
            DialogueRunner runner = new DialogueRunner(relay, Language.SWEDISH);

            TimedDialogueNode n1 = runner.Create<TimedDialogueNode>("Conversation1", Language.SWEDISH, "DialogueNode1");
            n1.nextNode = "DialogueNode2";
            n1.timer = 1;

            runner.Create<TimedDialogueNode>("Conversation2", Language.SWEDISH, "DialogueNode2");
            n1.Start();

            Assert.Throws<GrimmException>(() => {
                runner.Update(1.0f);
            });
        }
コード例 #43
0
ファイル: Main.cs プロジェクト: substans/TingTing
        private static void UsingNormalAccessor()
        {
            RelayTwo relay = new RelayTwo();

            relay.CreateTable(Ting.TABLE_NAME);
            TingRunner tingRunner          = new TingRunner(relay, new RoomRunner(relay));
            TestTing2UsingNormalAccessor t = tingRunner.CreateTing <TestTing2UsingNormalAccessor>("TestTing", WorldCoordinate.NONE);

            Console.WriteLine("Using class " + t.ToString());
            for (int i = 0; i < COUNTER; i++)
            {
                float a = t.awesome;
                a        += 1.0f;
                t.awesome = a;
            }
            Console.WriteLine("2. awesome = " + t.awesome);
        }
コード例 #44
0
        public void Setup()
        {
            _relay = new RelayTwo();
            _table = _relay.CreateTable(Ting.TABLE_NAME);
            _relay.CreateTable(Room.TABLE_NAME);
            _roomRunner = new RoomRunner(_relay);
            Room room = _roomRunner.CreateRoom <Room>(ROOM_NAME);

            for (int i = 0; i < 100; i++)
            {
                room.AddTile(new PointTileNode(new IntPoint(i % 10, i / 10), room));
            }

            _tingRunner = new TingRunner(_relay, _roomRunner);
            _tingRunner.CreateTing <MyTing>("Ting0", new WorldCoordinate(ROOM_NAME, new IntPoint(0, 0)));
            _tingRunner.CreateTing <MyTing>("Ting1", new WorldCoordinate(ROOM_NAME, new IntPoint(1, 0)));
        }
コード例 #45
0
ファイル: TingTest.cs プロジェクト: substans/TingTing
        public void Setup()
        {
            _relay = new RelayTwo();
            _table = _relay.CreateTable(Ting.TABLE_NAME);
            _relay.CreateTable(Room.TABLE_NAME);
            _roomRunner = new RoomRunner(_relay);
            Room room = _roomRunner.CreateRoom<Room>(ROOM_NAME);

            for (int i = 0; i < 100; i++)
            {
                room.AddTile(new PointTileNode(new IntPoint(i % 10, i / 10), room));
            }

            _tingRunner = new TingRunner(_relay, _roomRunner);
            _tingRunner.CreateTing<MyTing>("Ting0", new WorldCoordinate(ROOM_NAME, new IntPoint(0, 0)));
            _tingRunner.CreateTing<MyTing>("Ting1", new WorldCoordinate(ROOM_NAME, new IntPoint(1, 0)));
        }
コード例 #46
0
 private void Init(RelayTwo pRelay)
 {
     paused              = false;
     isReadyToPlay       = false;
     relay               = pRelay;
     dialogueRunner      = new DialogueRunner(relay, Language.DEFAULT);
     roomRunner          = new RoomRunner(relay);
     programRunner       = new ProgramRunner(relay);
     sourceCodeDispenser = new SourceCodeDispenser(relay);
     timetableRunner     = new TimetableRunner(relay);
     settings            = new WorldSettings(relay);
     tingRunner          = new MimanTingRunner(relay, dialogueRunner, programRunner, sourceCodeDispenser, roomRunner, timetableRunner, settings);
     grimmApiDefinitions = new MimanGrimmApiDefinitions(this);
     grimmApiDefinitions.RegisterFunctions();
     grimmApiDefinitions.RegisterExpressions();
     translator = new Translator(Translator.Language.SWEDISH);
 }
コード例 #47
0
ファイル: Main.cs プロジェクト: substans/TingTing
        private static void UsingCellId()
        {
            RelayTwo relay = new RelayTwo();

            relay.CreateTable(Ting.TABLE_NAME);
            TingRunner tingRunner = new TingRunner(relay, new RoomRunner(relay));
            TestTing1UsingCellIdWithConvenienceFunctions t = tingRunner.CreateTing <TestTing1UsingCellIdWithConvenienceFunctions>("TestTing", WorldCoordinate.NONE);

            Console.WriteLine("Using class " + t.ToString());
            for (int i = 0; i < COUNTER; i++)
            {
                float a = t.awesome;
                a        += 1.0f;
                t.awesome = a;
            }
            Console.WriteLine("1. awesome = " + t.awesome);
        }
コード例 #48
0
ファイル: InstantiatorTest.cs プロジェクト: substans/Relay
        public void BasicUsage()
        {
            RelayTwo relay = new RelayTwo();
            TableTwo table = relay.CreateTable("Stuffs");
            table.AddField<string>("name");
            table.AddField<string>(RelayObjectTwo.CSHARP_CLASS_FIELD_NAME);
            table.CreateRow().Set(RelayObjectTwo.CSHARP_CLASS_FIELD_NAME, "Stuff").Set("name", "first");
            table.CreateRow().Set(RelayObjectTwo.CSHARP_CLASS_FIELD_NAME, "Stuff").Set("name", "second");
            List<Stuff> objects = InstantiatorTwo.Process<Stuff>(table);

            Assert.AreEqual(2, objects.Count);

            Stuff first = objects[0];
            Stuff second = objects[1];

            Assert.AreEqual("first", first.name);
            Assert.AreEqual("second", second.name);
        }
コード例 #49
0
        public void CreateInitialSaveFromInitData1()
        {
            InitialSaveFileCreator i = new InitialSaveFileCreator();
            i.CreateSaveFile("../InitData1/", WorldTestHelper.INITIAL_SAVE_1);

            RelayTwo relay = new RelayTwo(WorldTestHelper.INITIAL_SAVE_1);
            AssertThatCanFindAllTables(relay);

            TableTwo tingTable = relay.GetTable(Character.TABLE_NAME);
            Assert.AreEqual("Adam", tingTable.GetRow(0).Get<string>("name"));
            Assert.AreEqual("Eva", tingTable.GetRow(1).Get<string>("name"));
            Assert.AreEqual("PowerCube", relay.GetTable(MysticalCube.TABLE_NAME).GetRow(0).Get<string>("name"));

            TableTwo roomTable = relay.GetTable(Room.TABLE_NAME);
            Assert.AreEqual("Eden", roomTable.GetRow(0).Get<string>("name"));
            Assert.AreEqual("Hallway", roomTable.GetRow(1).Get<string>("name"));
            Assert.AreEqual("Kitchen", roomTable.GetRow(2).Get<string>("name"));
            Assert.AreEqual("Bedroom", roomTable.GetRow(3).Get<string>("name"));
        }
コード例 #50
0
        public MimanTingRunner(
            RelayTwo pRelay,
            DialogueRunner pDialogueRunner,
            ProgramRunner pProgramRunner,
            SourceCodeDispenser pSourceCodeDispenser,
            RoomRunner pRoomRunner,
            TimetableRunner pTimetableRunner,
            WorldSettings pWorldSettings
            )
            : base(pRelay, pRoomRunner)
        {
            _dialogueRunner = pDialogueRunner;
            _dialogueRunner.AddOnSomeoneSaidSomethingListener(this.OnSomeoneSaidSomething);
            _programRunner       = pProgramRunner;
            _sourceCodeDispenser = pSourceCodeDispenser;
            _timetableRunner     = pTimetableRunner;
            _worldSettings       = pWorldSettings;

            foreach (Ting ting in _tings.Values)
            {
                if (ting is MimanTing)
                {
                    (ting as MimanTing).SetMimanRunners(_programRunner, _sourceCodeDispenser, _dialogueRunner, _worldSettings);
                }
                if (ting is Character)
                {
                    (ting as Character).SetTimetableRunner(_timetableRunner);
                }
            }

            foreach (Ting ting in _tings.Values)
            {
                if (ting is MimanTing)
                {
                    var mimanTing = ting as MimanTing;
                    mimanTing.Init();
                    if (mimanTing.autoUnregisterFromUpdate && mimanTing.dialogueLine != "")
                    {
                        Unregister(mimanTing);
                    }
                }
            }
        }
コード例 #51
0
ファイル: RoomTest.cs プロジェクト: eriksvedang/TingTing
		public void CreatingEmptyRoom()
		{
			string saveName = "MyEmptyRoomSave.json";
			{
				RelayTwo relay = new RelayTwo();
				relay.CreateTable(Room.TABLE_NAME);
				RoomRunner roomRunner = new RoomRunner(relay);
				roomRunner.CreateRoom<Room>("MyRoom");
				relay.SaveAll(saveName);
			}
			{
				RelayTwo relay = new RelayTwo(saveName);
				RoomRunner roomRunner = new RoomRunner(relay);
				Room room = roomRunner.GetRoom("MyRoom");
				Assert.IsNotNull(room);
				Assert.AreEqual("MyRoom", room.name);
				Assert.AreEqual(new PointTileNode[] {}, room.tiles);
			}
		}
コード例 #52
0
ファイル: RelayTwoTests.cs プロジェクト: substans/Relay
        public void Setup()
        {			
			D.onDLog += Log;
			
            _relay = new RelayTwo();
            TableTwo table1 = _relay.CreateTable("Table1");
			
			table1.AddField<float>("a");
			table1.AddField<float>("b");
			
			TableRow row0 = table1.CreateRow();
			TableRow row1 = table1.CreateRow();
			
			_rowIndex0 = row0.row;
			_rowIndex1 = row1.row;
			
			row0.Set("a", 3.5f);
			row0.Set("b", 7.0f);
			
			row1.Set("a", 2.0f);
			row1.Set("a", 5.0f);
        }
コード例 #53
0
        public void SaveAndLoadAProgram()
        {
            const string saveName = "SaveAndLoadAProgramTest.json";
            const string programName = "PrintMagicNumber";
            const string sourceCode = "print(42)";

            int programObjectId;

            {
                Program p = _programRunner.CreateProgram(programName, sourceCode, "unknown");
                programObjectId = p.objectId;
                _relay.SaveAll(saveName);
            }

            {
                RelayTwo relay = new RelayTwo(saveName);
                ProgramRunner programRunner = new ProgramRunner(relay);
                Program p = programRunner.GetProgram(programObjectId);
                Assert.AreEqual(programName, p.name);
                Assert.AreEqual(sourceCode, p.sourceCodeContent);
            }
        }
コード例 #54
0
ファイル: DialogueRunnerTest.cs プロジェクト: cyberis/Grimm
        public void CanNotStartDialogueNodeInAnotherConversation()
        {
            RelayTwo relay = new RelayTwo();
            relay.CreateTable(DialogueNode.TABLE_NAME);
            DialogueRunner runner = new DialogueRunner(relay, Language.SWEDISH);

            TimedDialogueNode n1 = runner.Create<TimedDialogueNode>("Conversation1", Language.SWEDISH, "DialogueNode1");
            n1.nextNode = "DialogueNode2";
            n1.timer = 1;

            runner.Create<TimedDialogueNode>("Conversation2", Language.SWEDISH, "DialogueNode2");
            n1.Start();

            string msg = null;

            D.onDLog += (pMessage) => {
                Console.WriteLine("DLog: " + pMessage);
                msg = pMessage;
            };

            runner.Update(1.0f);
            runner.Update(1.0f);
            Assert.NotNull(msg);
        }
コード例 #55
0
        public void BasicUsage()
        {
            const string saveName = "SourceCodeDispenserTest.json";

            {
                RelayTwo relay = new RelayTwo();
                relay.CreateTable(SourceCode.TABLE_NAME);

                SourceCodeDispenser sourceCodeDispenser = new SourceCodeDispenser(relay);
                sourceCodeDispenser.LoadSourceCode(WorldTestHelper.INIT_DATA_PATH + "Sprak/helloworld.sprak");

                SourceCode s = sourceCodeDispenser.GetSourceCode("helloworld");
                Assert.AreEqual("print(\"Hello World!\")", s.content);

                relay.SaveAll(saveName);
            }

            {
                RelayTwo relay = new RelayTwo(saveName);
                SourceCodeDispenser sourceCodeDispenser = new SourceCodeDispenser(relay);
                SourceCode s = sourceCodeDispenser.GetSourceCode("helloworld");
                Assert.AreEqual("print(\"Hello World!\")", s.content);
            }
        }
コード例 #56
0
ファイル: RelayTwoTests.cs プロジェクト: substans/Relay
        public void GetListOfRowIdsInTable()
        {
			RelayTwo relay = new RelayTwo();
			TableTwo table = relay.CreateTable("Table");
			
			table.CreateRow();
			table.CreateRow();
			table.CreateRow();
			
			int[] allObjectIds = table.GetIndexesOfPopulatedRows();

			Assert.AreEqual(3, allObjectIds.Length);
			CollectionAssert.AllItemsAreUnique(allObjectIds);
        }
コード例 #57
0
ファイル: RelayTwoTests.cs プロジェクト: substans/Relay
		public void SaveSubsetOfDatabase()
        {
			{
				RelayTwo relay = new RelayTwo();
				
				TableTwo table = relay.CreateTable("Table1");
				table.AddField<string>("name");
				table.AddField<bool>("1337");
				
				TableRow row1 = table.CreateRow();
				TableRow row2 = table.CreateRow();
				TableRow row3 = table.CreateRow();
				
				row1.Set("name", "Arne");
				row1.Set("1337", false);
				
				row2.Set("name", "Björn");
				row2.Set("1337", true);
				
				row3.Set("name", "Charlie");
				row3.Set("1337", false);
				
				Assert.AreEqual(3, table.GetRows().Length);
				
				RelayTwo subset = relay.Subset("Table1", (o => o.Get<bool>("1337") == true));
				
				subset.SaveAll("Only1337People.json");
			}
		
			{
				RelayTwo relay = new RelayTwo("Only1337People.json");
				TableTwo table = relay.GetTable("Table1");
				TableRow[] rows = table.GetRows();
				Assert.AreEqual(1, rows.Length);
				Assert.AreEqual("Björn", table.First().Get<string>("name"));
			}
		}
コード例 #58
0
ファイル: RelayTwoTests.cs プロジェクト: substans/Relay
        public void MergeSaves()
        {
			{
	            RelayTwo relay = new RelayTwo();
				
				TableTwo table = relay.CreateTable("Table");
	
	            table.AddField<string>("name");
	
	            TableRow row1 = table.CreateRow();
	            TableRow row2 = table.CreateRow();
	            TableRow row3 = table.CreateRow();
	
	            row1.Set("name", "a");
	            row2.Set("name", "b");
				row3.Set("name", "c");
	
	            Assert.AreEqual(3, table.GetRows().Length);
				Assert.AreEqual("a", table.GetRow(0).Get<string>("name"));
				Assert.AreEqual("b", table.GetRow(1).Get<string>("name"));
				Assert.AreEqual("c", table.GetRow(2).Get<string>("name"));
	
	            RelayTwo save1 = relay.Subset("Table", (o => o.Get<string>("name") == "a"));
	            RelayTwo save2 = relay.Subset("Table", (o => o.Get<string>("name") == "b"));
				RelayTwo save3 = relay.Subset("Table", (o => o.Get<string>("name") == "c"));
				
				Assert.AreEqual(1, save1.GetTable("Table").GetRows().Length);
				Assert.AreEqual(1, save2.GetTable("Table").GetRows().Length);
				Assert.AreEqual(1, save3.GetTable("Table").GetRows().Length);
				
				save1.SaveAll("PartialSave1.json");
				save2.SaveAll("PartialSave2.json");
				save3.SaveAll("PartialSave3.json");
			}
			{
				RelayTwo relay = new RelayTwo();
				relay.MergeWith(new RelayTwo("PartialSave1.json"));
				relay.MergeWith(new RelayTwo("PartialSave2.json"));
				relay.MergeWith(new RelayTwo("PartialSave3.json"));
				
				TableTwo table = relay.GetTable("Table");
				Assert.AreEqual(3, table.GetRows().Length);
				
				Assert.AreEqual("a", table.GetRow(0).Get<string>("name"));
				Assert.AreEqual("b", table.GetRow(1).Get<string>("name"));
				Assert.AreEqual("c", table.GetRow(2).Get<string>("name"));
			}
        }
コード例 #59
0
ファイル: RelayTwoTests.cs プロジェクト: substans/Relay
        public void MergeSavesWithDifferentFields()
        {
			{
	            RelayTwo relay = new RelayTwo();
				
				TableTwo table = relay.CreateTable("Table");
	
	            table.AddField<string>("oldField");
	
	            TableRow row1 = table.CreateRow();
	            TableRow row2 = table.CreateRow();
				TableRow row3 = table.CreateRow();
	
	            row1.Set("oldField", "kottar");
	            row2.Set("oldField", "stenar");
				row3.Set("oldField", "gräs");
				
				relay.Subset("Table", (o => o.row == 0)).SaveAll("s0.json");
				relay.Subset("Table", (o => o.row == 1)).SaveAll("s1.json");
				relay.Subset("Table", (o => o.row == 2)).SaveAll("s2.json");
	
				table.AddField<int>("newField");
				
	            TableRow row4 = table.CreateRow();
				TableRow row5 = table.CreateRow();		
				
				row4.Set("newField", 500);
				row5.Set("newField", 1000);
				
				relay.Subset("Table", (o => o.row == 3)).SaveAll("s3.json");
				relay.Subset("Table", (o => o.row == 4)).SaveAll("s4.json");
			}
			{
				RelayTwo relay = new RelayTwo();
				
				relay.MergeWith(new RelayTwo("s4.json"));
				relay.MergeWith(new RelayTwo("s0.json"));
				relay.MergeWith(new RelayTwo("s1.json"));
				relay.MergeWith(new RelayTwo("s2.json"));
				relay.MergeWith(new RelayTwo("s3.json"));
				
				
				TableTwo table = relay.GetTable("Table");
				Assert.AreEqual(5, table.GetRows().Length);
				
				Assert.AreEqual("kottar", table.GetRow(0).Get<string>("oldField"));
				Assert.AreEqual("stenar", table.GetRow(1).Get<string>("oldField"));
				Assert.AreEqual("gräs", table.GetRow(2).Get<string>("oldField"));
				
				Assert.AreEqual(500, table.GetRow(3).Get<int>("newField"));
				Assert.AreEqual(1000, table.GetRow(4).Get<int>("newField"));
			}
        }
コード例 #60
0
ファイル: RelayTwoTests.cs プロジェクト: substans/Relay
        public void MergeTwoSubsets()
        {
            RelayTwo relay = new RelayTwo();

            TableTwo table = relay.CreateTable("Table1");
            table.AddField<string>("name");
            table.AddField<bool>("1337");

            TableRow row1 = table.CreateRow();
            TableRow row2 = table.CreateRow();
            TableRow row3 = table.CreateRow();

            row1.Set("name", "Arne");
            row1.Set("1337", false);

            row2.Set("name", "Björn");
            row2.Set("1337", true);

            row3.Set("name", "Charlie");
            row3.Set("1337", false);

            Assert.AreEqual(3, table.GetRows().Length);

            RelayTwo subsetA = relay.Subset("Table1", (o => o.Get<bool>("1337") == true));
            RelayTwo subsetB = relay.Subset("Table1", (o => o.Get<bool>("1337") == false));
            subsetA.MergeWith(subsetB);
            Assert.Throws<RelayTwo.RelayMergeException>(() => subsetB.MergeWith(relay));
            Assert.AreEqual(true, subsetA.Equals(relay));
            Assert.AreEqual(false, subsetB.Equals(relay));
        }