00001 using System;
00002 using System.Collections.Generic;
00003 using System.Text;
00004 using NUnit.Framework;
00005 using System.Data;
00006 using Shared;
00007 using Server.Data;
00008
00009
00013 namespace Server.Test
00014 {
00018 [TestFixture]
00019 public class CatalogueTest
00020 {
00021 IPersistentData pd;
00022 Catalogue catalogue;
00023
00024
00025 private string creator = "someGuy";
00026 private DateTime start = DateTime.Now;
00027 private string subject = "Something subject";
00028 private string title = "some title";
00029 private string department = "some department";
00030
00031
00032 private string author = "SomeOne";
00033 private string source = "somewhere";
00034 private string summary = "yesyes";
00035 private LiteratureType lt = LiteratureType.Book;
00036
00037
00038 private int id;
00039
00040
00044 [SetUp]
00045 public void Init()
00046 {
00047 pd = new DummyData();
00048 catalogue = new Catalogue(pd);
00049 UniquelyIdentifiable.Reset();
00050 }
00051
00055 [Test]
00056 public void CreateProjectTest()
00057 {
00058 catalogue.RegisterUser(creator, "", "", "", "");
00059 ProjectInfo pi = new ProjectInfo(-1, start, DateTime.MinValue, subject, title, department, null, false);
00060 catalogue.CreateProject(pi, creator, out id);
00061 pi.id = id;
00062 Assert.AreEqual(catalogue.GetProject(id).Info, pi, "Create Project Test 1");
00063 }
00067 [Test]
00068 public void DeleteProjectTest()
00069 {
00070 CreateProjectTest();
00071 catalogue.DeleteProject(id);
00072 Assert.AreEqual(catalogue.GetProject(id), null, "Delete Project Test 2");
00073 }
00077 [Test]
00078 public void GetSpecificProjectTest()
00079 {
00080 CreateProjectTest();
00081 CreateProjectTest();
00082 CreateProjectTest();
00083
00084 Assert.AreEqual(catalogue.GetProject(id - 1).Title, title, "Get Specific Project Test 1");
00085 Assert.AreEqual(catalogue.GetProject(id - 2).Title, title, "Get Specific Project Test 2");
00086 }
00090 [Test]
00091 public void ListAllProjectsTest()
00092 {
00093 CreateProjectTest();
00094 CreateProjectTest();
00095 CreateProjectTest();
00096 CreateProjectTest();
00097 CreateProjectTest();
00098
00099 ProjectInfo[] p = catalogue.ListProjects();
00100
00101 Assert.AreEqual(p.Length, 5, "List Projects Test 1");
00102 Assert.AreNotEqual(p.Length, 6, "List Projects Test 2");
00103 }
00104
00108 [Test]
00109 public void UpdateProjectTest()
00110 {
00111 int firstID;
00112 int secondID;
00113 catalogue.RegisterUser(creator, "", "", "", "");
00114 ProjectInfo pi = new ProjectInfo(-1, start, DateTime.MinValue, subject, title, department, "", false);
00115 catalogue.CreateProject(pi, creator, out firstID);
00116 catalogue.CreateProject(pi, creator, out secondID);
00117
00118 catalogue.UpdateProject(new ProjectInfo(firstID, DateTime.Now, DateTime.Now, "test1", "", "", "", false));
00119 catalogue.UpdateProject(new ProjectInfo(secondID, DateTime.Now, DateTime.Now, "", "", "", "test2", false));
00120
00121 Assert.AreEqual(catalogue.GetProject(firstID).Subject, "test1", "Project Update Test 1");
00122 Assert.AreEqual(catalogue.GetProject(secondID).Synopsis, "test2", "Project Update Test 2");
00123 }
00124
00128 [Test]
00129 public void CreateLiteratureTest()
00130 {
00131 catalogue.RegisterUser(creator, "", "", "", "");
00132
00133
00134 catalogue.CreateLiterature(new LiteratureInfo(0, creator, "", title, author, summary, source, DateTime.Now, lt), out id);
00135
00136 LiteratureInfo li = catalogue.GetLiteratureInfo(id);
00137
00138 Assert.AreNotEqual(li, null, "Create Literature Test 1");
00139 }
00140
00144 [Test]
00145 public void GetLiteratureTest()
00146 {
00147 int firstID;
00148 int secondID;
00149 catalogue.RegisterUser(creator, "", "", "", "");
00150
00151 catalogue.CreateLiterature(new LiteratureInfo(0, creator, "", title, author, summary, source, DateTime.Now, lt), out firstID);
00152 catalogue.CreateLiterature(new LiteratureInfo(0, creator, "", title, author, summary, source, DateTime.Now, lt), out secondID);
00153
00154 LiteratureInfo li = catalogue.GetLiteratureInfo(firstID);
00155 Assert.AreEqual(li.summary, summary, "Get Literature Test 1");
00156
00157 li = catalogue.GetLiteratureInfo(secondID);
00158 Assert.AreEqual(li.source, source, "Get Literature Test 2");
00159 }
00160
00164 [Test]
00165 public void ListLiteratureTest()
00166 {
00167 for (int i = 0; i < 1000; i++)
00168 {
00169 CreateLiteratureTest();
00170 }
00171
00172 LiteratureInfo[] li = catalogue.ListLiterature();
00173
00174 Assert.AreEqual(li.Length, 1000, "List Literature Test 1");
00175 }
00176
00180 [Test]
00181 public void DeleteLiteratureTest()
00182 {
00183 int firstID;
00184 int secondID;
00185 catalogue.RegisterUser(creator, "", "", "", "");
00186
00187 catalogue.CreateLiterature(new LiteratureInfo(0, creator, "", title, author, summary, source, DateTime.Now, lt), out firstID);
00188 catalogue.CreateLiterature(new LiteratureInfo(0, creator, "", title, author, summary, source, DateTime.Now, lt), out secondID);
00189
00190 LiteratureInfo[] li = catalogue.ListLiterature();
00191 Assert.AreEqual(li.Length, 2, "Delete Literature Test 1");
00192
00193 catalogue.DeleteLiterature(secondID);
00194
00195 li = catalogue.ListLiterature();
00196 Assert.AreEqual(li.Length, 1, "Delete Literature Test 2");
00197 }
00198
00202 [Test]
00203 public void UpdateLiteratureTest()
00204 {
00205 int firstID;
00206 int secondID;
00207
00208 catalogue.RegisterUser(creator, "", "", "", "");
00209
00210 catalogue.CreateLiterature(new LiteratureInfo(0, creator, "", title, author, summary, source, DateTime.Now, lt), out firstID);
00211 catalogue.CreateLiterature(new LiteratureInfo(0, creator, "", title, author, summary, source, DateTime.Now, lt), out secondID);
00212
00213 catalogue.UpdateLiterature(new LiteratureInfo(firstID, creator, "test1", "", "", "", "", DateTime.Now, LiteratureType.Website));
00214
00215 LiteratureInfo li = catalogue.GetLiteratureInfo(firstID);
00216
00217 Assert.AreEqual(li.isbn, "test1", "Update Literature Test 1");
00218 Assert.AreEqual(li.type, LiteratureType.Website, "Update Literature Test 2");
00219 }
00220
00224 [Test]
00225 public void RegisterAndGetUserTest()
00226 {
00227 catalogue.RegisterUser("BigBoy", "testpassw", "Henning", "CS", "Email");
00228 Assert.AreNotEqual(catalogue.GetUser("BigBoy"), null, "RegisterAndGetUserTest 1");
00229
00230 Messages m = catalogue.RegisterUser("BigBoy", "testpassw", "Henning", "CS", "email");
00231 Assert.AreEqual(m, Messages.UserExists, "RegisterAndGetUserTest 2");
00232 Assert.AreEqual(catalogue.GetUser("BigBoy").Name, "Henning", "RegisterAndGetUserTest 3");
00233
00234 }
00235
00239 [Test]
00240 public void GetPersonInfoTest()
00241 {
00242 catalogue.RegisterUser("BigBoy", "testpassw", "Henning", "CS", "dsadsa");
00243 PersonInfo pi_1 = catalogue.GetPersonInfo("BigBoy");
00244 Assert.AreEqual(pi_1.department, "CS", "GetPersonTest 1");
00245
00246 PersonInfo pi_2 = catalogue.GetPersonInfo("GroovyGirl");
00247 Assert.AreEqual(pi_2.department, null, "GetPersonTest 2");
00248 }
00249
00253 [Test]
00254 public void AddRemoveTagsTest()
00255 {
00256 Messages m1 = catalogue.AddTag("Usability", 234, "Berg");
00257 Assert.AreEqual(m1, Messages.Fail, "Add tag to non-existing id-test");
00258
00259 MakeData();
00260
00261 Messages m2 = catalogue.AddTag("GUI", 0, "Bruno");
00262 Assert.AreEqual(m2, Messages.OK, "Add tag to existing id-test");
00263 Assert.AreEqual(catalogue.GetTags("GUI", 0,"Bruno").Length, 1, "Add tag to existing id-test");
00264
00265 m2 = catalogue.AddTag("GUI", 0, "Bruno");
00266 Assert.AreEqual(m2, Messages.Fail, "Add the same tag once more-test");
00267 Assert.AreEqual(catalogue.GetTags("GUI", 0, "Bruno").Length, 1, "Add tag to existing id-test");
00268
00269 Messages m3 = catalogue.RemoveTag("GUI", 0, "Bruno");
00270 Assert.AreEqual(m3, Messages.OK, "Remove tag-test");
00271 Assert.AreEqual(catalogue.GetTags("GUI", 0, "Bruno").Length, 0, "Add tag to existing id-test");
00272
00273 }
00274
00278 public void MakeData()
00279 {
00280 catalogue.RegisterUser("felizk", "test", "Jacob Korsgaard", "Computer Science", "email");
00281 catalogue.RegisterUser("janjense", "test", "Jan Jensen", "Humanistisk Informatik", "email");
00282 catalogue.RegisterUser("husted", "test", "Niels Husted", "Angry Mob", "email");
00283 catalogue.RegisterUser("agibsen", "test", "Andy Gibson", "Hospis for Demente Kodere", "email");
00284 catalogue.RegisterUser("jd", "test", "Jonathan Something", "Usability Lab", "email");
00285 catalogue.RegisterUser("lenin", "test", "Lenin Dan Tutra", "100-meter Skoven", "email");
00286 catalogue.RegisterUser("kasper", "test", "General Kasper No", "China Motherland", "email");
00287
00288 int pid, lid;
00289 catalogue.CreateProject(new ProjectInfo(-1, DateTime.Now, DateTime.MinValue, "Object Oriented Programming", "Article Catalogue", "Datalogi 1", "", false), "felizk", out pid);
00290 catalogue.CreateProject(new ProjectInfo(-1, DateTime.Now, DateTime.MinValue, "System Design and Analysis", "Wallpaper Randomizer", "Datamatiker", "", false), "janjense", out pid);
00291 catalogue.CreateProject(new ProjectInfo(-1, DateTime.Now, DateTime.MinValue, "DirectX of Evil Doom", "Computer Science", "Humanistisk Informatik 1", "", false), "felizk", out pid);
00292 catalogue.CreateProject(new ProjectInfo(-1, DateTime.Now, DateTime.MinValue, "Bogholdnings System", "Ordering books using PropertyGrids", "Al-Queda", "", false), "husted", out pid);
00293 catalogue.CreateProject(new ProjectInfo(-1, DateTime.Now, DateTime.MinValue, "Ældgamle Ødelagte Spil", "Kalaha for people who dont know the rules", "Seniltropperne A33", "", false), "agibsen", out pid);
00294 catalogue.CreateLiterature(new LiteratureInfo(0, "felizk", "Real-Time Rendering", title, "Craig Larman", "A book about UML and DirectX, projects Jacob Jacob Jacob Jacob Jacob", "The Internet", DateTime.Now, LiteratureType.Ebook), out lid);
00295
00296 }
00297
00301 [Test]
00302 public void GetTags()
00303 {
00304 List<TagInfo> testTags = CreateTags();
00305 MakeData();
00306
00307 StatisticsInfo si = catalogue.GetStatistics();
00308 Assert.AreEqual(si.ProjectCount, 5, "Amount of saved tags are the same 15! ");
00309
00310
00311 foreach (TagInfo tags in testTags)
00312 catalogue.AddTag(tags.Name, tags.ID, tags.UserName);
00313
00314 TagInfo[] allTags = catalogue.GetTags(null, -1, null);
00315
00316 Assert.AreEqual(testTags.Count, 16, "Amount of saved tags are the same! ");
00317 Assert.AreEqual(allTags.Length, 16, "Amount of saved tags are the same 2! ");
00318
00319 foreach (TagInfo ti in testTags) {
00320
00321 TagInfo[] catTag = catalogue.GetTags(ti.Name, ti.ID, ti.UserName);
00322
00323 Assert.AreEqual(catTag.Length, 1, "Tags in catalogue same as those saved test");
00324
00325 Assert.AreEqual(catTag[0], ti, "Tags in catalogue same as those saved test");
00326 }
00327
00328 TagInfo[] t1 = catalogue.GetTags("GameCube", 15, "hat");
00329 Assert.AreEqual(t1.Length, 0, "Find nothing when nothing is supposed to be found");
00330
00331 t1 = catalogue.GetTags(null, -1, "felizk");
00332 Assert.AreEqual(t1.Length, 8, "Find correct amount when searching on username");
00333
00334 t1 = catalogue.GetTags(null, -1, "janjense");
00335 Assert.AreEqual(t1.Length, 2, "Find correct amount when searching on username");
00336
00337 t1 = catalogue.GetTags(null, 0, null);
00338 Assert.AreEqual(t1.Length, 4, "Find correct amount when searching on ID");
00339
00340 t1 = catalogue.GetTags("Wii", -1, null);
00341 Assert.AreEqual(t1.Length, 8, "Find correct amount when searching on Tag Name");
00342
00343 }
00344
00349 private List<TagInfo> CreateTags()
00350 {
00351 List<TagInfo> infos = new List<TagInfo>();
00352
00353 infos.Add(new TagInfo("Wii", 0, "felizk"));
00354 infos.Add(new TagInfo("Wii", 1, "felizk"));
00355 infos.Add(new TagInfo("Wii", 2, "felizk"));
00356 infos.Add(new TagInfo("Wii", 3, "felizk"));
00357
00358 infos.Add(new TagInfo("Wii", 0, "janjense"));
00359 infos.Add(new TagInfo("Wii", 1, "agibsen"));
00360 infos.Add(new TagInfo("Wii", 2, "jd"));
00361 infos.Add(new TagInfo("Wii", 3, "husted"));
00362
00363 infos.Add(new TagInfo("Xbox", 0, "janjense"));
00364 infos.Add(new TagInfo("Xbox", 1, "agibsen"));
00365 infos.Add(new TagInfo("Xbox", 2, "jd"));
00366 infos.Add(new TagInfo("Xbox", 3, "husted"));
00367
00368 infos.Add(new TagInfo("Xbox", 0, "felizk"));
00369 infos.Add(new TagInfo("Xbox", 1, "felizk"));
00370 infos.Add(new TagInfo("Xbox", 2, "felizk"));
00371 infos.Add(new TagInfo("Xbox", 3, "felizk"));
00372 return infos;
00373 }
00374
00378 [Test]
00379 public void ReferenceTest()
00380 {
00381 catalogue.RegisterUser("felizk", "test", "Jacob Korsgaard", "Computer Science", "email");
00382 int pid, lid;
00383 catalogue.CreateProject(new ProjectInfo(-1, DateTime.Now, DateTime.MinValue, "Object Oriented Programming", "Article Catalogue", "Datalogi 1", "", false), "felizk", out pid);
00384 catalogue.CreateLiterature(new LiteratureInfo(0, "felizk", "Real-Time Rendering", title, "Craig Larman", "A book about UML and DirectX, projects Jacob Jacob Jacob Jacob Jacob", "The Internet", DateTime.Now, LiteratureType.Ebook), out lid);
00385
00386 ReferenceInfo ri = new ReferenceInfo(pid, lid, DateTime.Now, true, "status");
00387 catalogue.CreateReference(ri);
00388
00389 ReferenceInfo[] ris = catalogue.ListReferences(pid);
00390 Assert.AreEqual(ris.Length, 1, "ListReferences Test");
00391 Assert.AreEqual(ris[0], ri, "ListReferences Test");
00392
00393 ReferenceInfo ri2 = catalogue.GetReferenceInfo(pid, lid);
00394 Assert.AreNotEqual(ri2, new ReferenceInfo(), "GetReferenceInfo Test 1");
00395 Assert.AreEqual(ri2, ri, "GetReferenceInfo Test 2");
00396
00397 catalogue.UpdateReference(new ReferenceInfo(ri.project, ri.literature, ri.date, ri.used, ri.status + " askdj aæskdj aæsdlj aæsldk "));
00398 ri = catalogue.GetReferenceInfo(ri.project, ri.literature);
00399 Assert.AreNotEqual(ri, ri2, "UpdateReference Test 1");
00400 ri.status = ri2.status;
00401 Assert.AreEqual(ri, ri2, "UpdateReference Test 2");
00402 }
00403
00407 [Test]
00408 public void ReviewTest()
00409 {
00410 catalogue.RegisterUser("felizk", "test", "Jacob Korsgaard", "Computer Science", "email");
00411 int pid, lid;
00412 catalogue.CreateProject(new ProjectInfo(-1, DateTime.Now, DateTime.MinValue, "Object Oriented Programming", "Article Catalogue", "Datalogi 1", "", false), "felizk", out pid);
00413 catalogue.CreateLiterature(new LiteratureInfo(0, "felizk", "Real-Time Rendering", title, "Craig Larman", "A book about UML and DirectX, projects Jacob Jacob Jacob Jacob Jacob", "The Internet", DateTime.Now, LiteratureType.Ebook), out lid);
00414
00415 ReviewInfo ri = new ReviewInfo(pid, lid, DateTime.Now, true, "status", "felizk", "test", "test", 10);
00416 catalogue.CreateReview(ri);
00417
00418 ReviewInfo[] ris = catalogue.ListReviews(pid);
00419 Assert.AreEqual(ris.Length, 1, "ListReviews Test");
00420 Assert.AreEqual(ris[0], ri, "ListReviews Test");
00421
00422 ReviewInfo ri2 = catalogue.GetReviewInfo(pid, lid);
00423 Assert.AreNotEqual(ri2, new ReviewInfo(), "GetReviewInfo Test 1");
00424 Assert.AreEqual(ri2, ri, "GetReviewInfo Test 2");
00425
00426 catalogue.UpdateReview(new ReviewInfo(ri.project, ri.literature, ri.date, ri.used, ri.status, ri.person, ri.title + " askdj aæskdj aæsdlj aæsldk ", ri.text, ri.rating));
00427 ri = catalogue.GetReviewInfo(ri.project, ri.literature);
00428 Assert.AreNotEqual(ri, ri2, "UpdateReview Test 1");
00429 ri.title = ri2.title;
00430 Assert.AreEqual(ri, ri2, "UpdateReview Test 2");
00431 }
00432
00436 [Test]
00437 public void SuggestionTest()
00438 {
00439 catalogue.RegisterUser("felizk", "test", "Jacob Korsgaard", "Computer Science", "email");
00440 int pid, lid;
00441 catalogue.CreateProject(new ProjectInfo(-1, DateTime.Now, DateTime.MinValue, "Object Oriented Programming", "Article Catalogue", "Datalogi 1", "", false), "felizk", out pid);
00442 catalogue.CreateLiterature(new LiteratureInfo(0, "felizk", "Real-Time Rendering", title, "Craig Larman", "A book about UML and DirectX, projects Jacob Jacob Jacob Jacob Jacob", "The Internet", DateTime.Now, LiteratureType.Ebook), out lid);
00443
00444 SuggestionInfo ri = new SuggestionInfo(pid, lid, DateTime.Now, true, "status", "felizk", "reason");
00445 catalogue.CreateSuggestion(ri);
00446
00447 SuggestionInfo[] ris = catalogue.ListSuggestions(pid);
00448 Assert.AreEqual(ris.Length, 1, "ListReviews Test");
00449 Assert.AreEqual(ris[0], ri, "ListReviews Test");
00450
00451 SuggestionInfo ri2 = catalogue.GetSuggestionInfo(pid, lid);
00452 Assert.AreNotEqual(ri2, new SuggestionInfo(), "GetReviewInfo Test 1");
00453 Assert.AreEqual(ri2, ri, "GetReviewInfo Test 2");
00454
00455 catalogue.UpdateSuggestion(new SuggestionInfo(ri.project, ri.literature, ri.date, ri.used, ri.status + " askdj aæskdj aæsdlj aæsldk ", ri.person, ri.reason));
00456 ri = catalogue.GetSuggestionInfo(ri.project, ri.literature);
00457 Assert.AreNotEqual(ri, ri2, "UpdateReview Test 1");
00458 ri.status = ri2.status;
00459 Assert.AreEqual(ri, ri2, "UpdateReview Test 2");
00460 }
00461
00465 [Test]
00466 public void Search()
00467 {
00468 catalogue.RegisterUser("felizk", "test", "Jacob Korsgaard", "Computer Science", "email");
00469 catalogue.RegisterUser("janjense", "test", "Jan Jensen", "Humanistisk Informatik", "email");
00470 catalogue.RegisterUser("husted", "test", "Niels Husted", "Angry Mob", "email");
00471 catalogue.RegisterUser("agibsen", "test", "Andy Gibson", "Hospis for Demente Kodere", "email");
00472 catalogue.RegisterUser("jd", "test", "Jonathan Something", "Usability Lab", "email");
00473 catalogue.RegisterUser("lenin", "test", "Lenin Dan Tutra", "100-meter Skoven", "email");
00474 catalogue.RegisterUser("kasper", "test", "General Kasper No", "China Motherland", "email");
00475
00476 int pid, lid;
00477 catalogue.CreateProject(new ProjectInfo(-1, DateTime.Now, DateTime.MinValue, "Object Oriented Programming", "Article Catalogue", "Datalogi 1", "", false), "felizk", out pid);
00478 catalogue.CreateProject(new ProjectInfo(-1, DateTime.Now, DateTime.MinValue, "System Design and Analysis", "Wallpaper Randomizer", "Datamatiker", "", false), "janjense", out pid);
00479 catalogue.CreateProject(new ProjectInfo(-1, DateTime.Now, DateTime.MinValue, "DirectX of Evil Doom", "Computer Science", "Humanistisk Informatik 1", "", false), "felizk", out pid);
00480 catalogue.CreateProject(new ProjectInfo(-1, DateTime.Now, DateTime.MinValue, "Bogholdnings System", "Ordering books using PropertyGrids", "Al-Queda", "", false), "husted", out pid);
00481 catalogue.CreateProject(new ProjectInfo(-1, DateTime.Now, DateTime.MinValue, "Ældgamle Ødelagte Spil", "Kalaha for people who dont know the rules", "Seniltropperne A33", "", false), "agibsen", out pid);
00482
00483 ProjectInfo pi = catalogue.GetProjectInfo(pid);
00484 catalogue.UpdateProject(new ProjectInfo(pi.id, pi.startDate, pi.endDate, pi.subject, pi.title, pi.department, "A system that contains references between literature and projects", true));
00485
00486 catalogue.CreateLiterature(new LiteratureInfo(0, "felizk", "Real-Time Rendering", title, "Craig Larman", "A book about UML and DirectX, projects Jacob Jacob Jacob Jacob Jacob", "The Internet", DateTime.Now, LiteratureType.Ebook), out lid);
00487
00488 List<SearchResult> results = catalogue.Search("Humanist", ResultType.All);
00489 foreach (SearchResult sr in results)
00490 Console.WriteLine(sr.Item.Title + " (" + sr.Relevance + ") - " + sr.Item.Title + ": " + sr.Item.Description);
00491 Assert.AreEqual(results.Count, 2, "Humanist Test");
00492
00493 results = catalogue.Search("Computer", ResultType.All);
00494 foreach (SearchResult sr in results)
00495 Console.WriteLine(sr.Item.Title + " (" + sr.Relevance + ") - " + sr.Item.Title + ": " + sr.Item.Description);
00496 Assert.AreEqual(results.Count, 2, "Computer Test");
00497
00498 Console.WriteLine();
00499
00500 results = catalogue.Search("Jacob Korsgaard", ResultType.Project);
00501 foreach (SearchResult sr in results)
00502 Console.WriteLine(sr.Item.Title + " (" + sr.Relevance + ") - " + sr.Item.Title + ": " + sr.Item.Description);
00503
00504 Assert.AreEqual(results.Count, 2, "Search Project using users Test");
00505 }
00506
00507
00508
00509 }
00510
00511
00512 }