Ejemplo n.º 1
0
        static void TestDeleteNote(NoteDatabase db, List <KnowledgeBase> kbList)
        {
            var toDelete = new List <Note>();

            foreach (var kb in kbList)
            {
                toDelete.AddRange(db.FetchNote(kb.Name));
            }
            foreach (var note in toDelete)
            {
                // Delete
                db.DeleteNote(note.Directory, note.Title);

                // Try to fetch
                var result = db.FetchNote(note.Directory, note.Title);

                // Check result
                if (result == Note.VoidNote)
                {
                    Console.WriteLine($"Delete note {note.Title}");
                }
                else
                {
                    Console.WriteLine($"Delete note failed: {note.Title}");
                    Console.ReadKey();
                }

                // Restore
                db.AddNote(note);
            }
        }
Ejemplo n.º 2
0
        static void TestUpdateNote(NoteDatabase db, List <Note> noteList, List <KnowledgeBase> kbList)
        {
            // New contents
            List <string> contents = new List <string>()
            {
                // Math
                "a+b < c",
                "Newton",
                "Linear Transformation",

                // English
                "Clause",
                "What's up",

                // Cpp
                "Don't use not owning raw pointers",
                "lambda, functional, auto",
                "Tempalte template parameters?"
            };

            // Test body
            var toUpdate = new List <Note>();

            foreach (var kb in kbList)
            {
                toUpdate.AddRange(db.FetchNote(kb.Name));
            }
            for (int i = 0; i < toUpdate.Count; i++)
            {
                // Update
                toUpdate[i].Content = contents[i];
                toUpdate[i]         = db.UpdateNote(toUpdate[i]);

                // Comparison
                if (toUpdate[i].Content == contents[i])
                {
                    Console.WriteLine($"Update {noteList[i].Title}: {toUpdate[i].Content}");
                }
                else
                {
                    Console.WriteLine($"Update content: <{toUpdate[i].Content}> should be <{contents[i]}>");
                }

                // Restore
                db.UpdateNote(noteList[i]);
            }
        }
Ejemplo n.º 3
0
        static void TestFecthNote(NoteDatabase db, List <Note> noteList, List <KnowledgeBase> kbList)
        {
            #region FetchNote(directory, title)
            foreach (var note in noteList)
            {
                var actual = db.FetchNote(note.Directory, note.Title);
                if (actual != null &&
                    actual.Title == note.Title &&
                    actual.Directory == note.Directory
                    )
                {
                    Console.WriteLine($"note {note.Title}: pass\n");
                }
                else if (actual == null)
                {
                    Console.WriteLine($"ERROR: note {note.Title} {note.Directory}, actual is null!\n");
                }
                else
                {
                    Console.WriteLine($"ERROR: note {note.Title} {note.Directory}, (actual) {actual.Title} {actual.Directory}!\n");
                }
            }
            #endregion

            #region FetchNote(directory)
            foreach (var kb in kbList)
            {
                var actual   = db.FetchNote(kb.Name);
                var expected = noteList.FindAll(note => note.Directory == kb.Name);
                if (actual.Count != expected.Count)
                {
                    Console.WriteLine("Error: FetchNote(directory) differs");
                }
                for (int i = 0; i < expected.Count; i++)
                {
                    if (i < actual.Count && actual[i] == expected[i])
                    {
                        Console.WriteLine($"note {expected[i].Title}: pass\n");
                    }
                    else if (i >= actual.Count)
                    {
                        Console.WriteLine($"ERROR: note {expected[i].Title} {expected[i].Directory}, actual is null!\n");
                    }
                    else if (actual[i] != expected[i])
                    {
                        Console.WriteLine($"ERROR: note {expected[i].Title} {expected[i].Directory}, (actual) {actual[i].Title} {actual[i].Directory}!\n");
                    }
                }
            }
            #endregion

            #region non-exists
            var shouldBeNull = db.FetchNote(null);
            if (shouldBeNull == null)
            {
                Console.WriteLine("Note Should-be-null: pass");
            }
            else
            {
                Console.WriteLine("Note Should-be-null: Error");
                Console.ReadKey();
            }

            // Non-exist KnowledgeBase
            var emptyKb = new KnowledgeBase()
            {
                Name = "Template"
            };
            db.AddKnowledgeBase(emptyKb);
            var shouldBeEmpty0 = db.FetchNote(emptyKb.Name);
            var shouldBeEmpty1 = db.FetchNote("Java");
            if (shouldBeEmpty0.Count == 0 &&
                shouldBeEmpty1.Count == 0)
            {
                Console.WriteLine("Note Should-be-empty: pass");
            }
            else
            {
                Console.WriteLine("Note Should-be-empty: Error");
                Console.ReadKey();
            }
            // Restore
            db.DeleteKnowledgeBase(emptyKb.Name);

            // Non-exist note
            var shouldBeVoid = db.FetchNote("Cpp", "tr1");
            if (shouldBeVoid == Note.VoidNote)
            {
                Console.WriteLine("Note Should-be-void: pass");
            }
            else
            {
                Console.WriteLine("Note Should-be-void: Error");
                Console.ReadKey();
            }
            #endregion
        }