private void AddOffsets(List <Offset> offsets, ExamTable table) { foreach (var o in offsets) { table.Add(o.studentId, o.courseId); } }
public void TestExamResult() { int userId = 1; QuestionAnswer answer1 = new QuestionAnswer("Ostrava", true); QuestionAnswer answer2 = new QuestionAnswer("Praha", false); Question question = QuestionTable.InsertQuestion(this.connection, userId, "test", "closed", new List <QuestionAnswer>() { answer1, answer2 }); Exam exam = ExamTable.InsertExam(this.connection, userId, "test exam", 10, 1, 1, DateTime.Now.AddDays(-1), DateTime.Now.AddDays(1)); exam.AddQuestion(question.Id, 20); ExamTable.UpdateExam(this.connection, exam); int examResultId = ExamResultTable.InsertExamResult(this.connection, exam.Id, userId); ExamResult examResult = ExamResultTable.GetExamResultById(this.connection, examResultId); Assert.AreEqual(examResultId, examResult.Id); Assert.AreEqual(userId, examResult.OwnerId); Assert.AreEqual("created", examResult.State); ExamAnswer answer = new ExamAnswer(question.Id, "Ostrava"); Assert.IsTrue(ExamResultTable.HandInExamResult(this.connection, examResult, new List <ExamAnswer>() { answer })); examResult = ExamResultTable.GetExamResultById(this.connection, examResult.Id); Assert.AreEqual("finished", examResult.State); Assert.AreEqual(exam.Questions[0].Points, examResult.Points); }
public void TestExamCreation() { Exam exam = ExamTable.InsertExam(this.connection, 1, "test", 10, 10, 3, DateTime.Now, DateTime.Now.AddDays(1)); Exam dbExam = ExamTable.GetExamById(this.connection, exam.Id); Assert.AreEqual(exam.Id, dbExam.Id); Assert.AreEqual(exam.OwnerId, dbExam.OwnerId); Assert.AreEqual(exam.Name, dbExam.Name); Assert.AreEqual(exam.Timelimit, dbExam.Timelimit); Assert.AreEqual(exam.MinimumPoints, dbExam.MinimumPoints); Assert.AreEqual(exam.MaximumAttempts, dbExam.MaximumAttempts); Assert.AreEqual(exam.StartDate, dbExam.StartDate); Assert.AreEqual(exam.EndDate, dbExam.EndDate); Assert.IsTrue(ExamTable.DeleteExam(this.connection, exam, 1)); try { exam = ExamTable.GetExamById(this.connection, exam.Id); Assert.Fail("Test pořád existuje"); } catch (DatabaseException) { } }
public void TestExamActiveList() { Exam exam = ExamTable.InsertExam(this.connection, 1, "test", 10, 10, 10, DateTime.Now.AddDays(-1), DateTime.Now.AddDays(1)); Assert.IsTrue(ExamTable.GetActiveExams(this.connection).Contains(exam.Id)); Assert.IsTrue(ExamTable.DeleteExam(this.connection, exam, exam.OwnerId)); }
public ActionResult DeleteConfirmed(int id) { if (string.IsNullOrEmpty(Convert.ToString(Session["UserName"]))) { return(RedirectToAction("Login", "Home")); } ExamTable examTable = db.ExamTables.Find(id); db.ExamTables.Remove(examTable); db.SaveChanges(); return(RedirectToAction("Index")); }
static void Main(string[] args) { var table = new ExamTable(1000); var list = new ExamList(); int numberOfMoves = 5000; int numberOfThreads = 100; TimeSpan time = WorkingTime(table, numberOfMoves, numberOfThreads); Console.WriteLine("{0} moves on {1} threads with {2} took {3} time", numberOfMoves, numberOfThreads, table.ToString(), time); time = WorkingTime(list, numberOfMoves, numberOfThreads); Console.WriteLine("{0} moves on {1} threads with {2} took {3} time", numberOfMoves, numberOfThreads, list.ToString(), time); Console.ReadKey(); }
public void TestExamActive() { Exam activeExam = ExamTable.InsertExam(this.connection, 1, "test", 10, 10, 10, DateTime.Now.AddDays(-1), DateTime.Now.AddDays(1)); Assert.IsTrue(ExamTable.IsExamActive(this.connection, activeExam)); Exam inactiveExam = ExamTable.InsertExam(this.connection, 1, "test", 10, 10, 10, DateTime.Now.AddDays(1), DateTime.Now.AddDays(2)); Assert.IsFalse(ExamTable.IsExamActive(this.connection, inactiveExam)); Assert.IsTrue(ExamTable.DeleteExam(this.connection, activeExam, activeExam.OwnerId)); Assert.IsTrue(ExamTable.DeleteExam(this.connection, inactiveExam, inactiveExam.OwnerId)); }
public void TestExamQuestions() { Exam exam = ExamTable.InsertExam(this.connection, 1, "test", 10, 10, 10, DateTime.Now, DateTime.Now.AddDays(1)); exam.AddQuestion(new ExamQuestion(1, exam.Id, 0, 5.5m)); ExamTable.UpdateExam(this.connection, exam); Exam dbExam = ExamTable.GetExamById(this.connection, exam.Id); Assert.AreEqual(exam.Questions.Count, dbExam.Questions.Count); Assert.AreEqual(exam.Questions[0].Points, dbExam.Questions[0].Points); Assert.IsTrue(ExamTable.DeleteExam(this.connection, exam, exam.OwnerId)); }
// GET: ExamTables/Details/5 public ActionResult Details(int?id) { if (string.IsNullOrEmpty(Convert.ToString(Session["UserName"]))) { return(RedirectToAction("Login", "Home")); } if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } ExamTable examTable = db.ExamTables.Find(id); if (examTable == null) { return(HttpNotFound()); } return(View(examTable)); }
// GET: ExamTables/Edit/5 public ActionResult Edit(int?id) { if (string.IsNullOrEmpty(Convert.ToString(Session["UserName"]))) { return(RedirectToAction("Login", "Home")); } if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } ExamTable examTable = db.ExamTables.Find(id); if (examTable == null) { return(HttpNotFound()); } ViewBag.UserID = new SelectList(db.UserTables, "UserID", "FullName", examTable.UserID); return(View(examTable)); }
public ActionResult Create(ExamTable examTable) { if (string.IsNullOrEmpty(Convert.ToString(Session["UserName"]))) { return(RedirectToAction("Login", "Home")); } int userid = Convert.ToInt32(Convert.ToString(Session["UserID"])); examTable.UserID = userid; if (ModelState.IsValid) { db.ExamTables.Add(examTable); db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.UserID = new SelectList(db.UserTables, "UserID", "FullName", examTable.UserID); return(View(examTable)); }
public void ExamTableTest() { ExamTable table = new ExamTable(50); List <Thread> threads = new List <Thread>(); List <Offset> offsets = new List <Offset>(); int numberOfThreads = 10; int numberOfAddThreads = numberOfThreads / 2; int numberOfRemoveThreads = numberOfThreads - numberOfAddThreads; int numberOfIdStudents = 50; int numberOfIdCourses = 20; int numberOfRemovedOffsets = 0; int removeValue = 5; for (int i = 0; i < numberOfIdStudents; ++i) { for (int j = 0; j < numberOfIdCourses; ++j) { offsets.Add(new Offset(i, j)); if (i * j % removeValue == 0) { numberOfRemovedOffsets++; } } } int addPartLenght = offsets.Count / numberOfAddThreads; for (int i = 0; i < numberOfAddThreads - 1; ++i) { var partOfAllOffsets = offsets.GetRange(i * addPartLenght, addPartLenght); threads.Add(new Thread(() => AddOffsets(partOfAllOffsets, table))); threads.Last().Start(); } var lastPartOfAllOffsets = offsets.GetRange((numberOfAddThreads - 1) * addPartLenght, offsets.Count - (numberOfAddThreads - 1) * addPartLenght); threads.Add(new Thread(() => AddOffsets(lastPartOfAllOffsets, table))); threads.Last().Start(); for (int i = 0; i < numberOfAddThreads; ++i) { threads[i].Join(); } List <Offset> filteredList = offsets.FindAll(new Predicate <Offset>((o) => (o.studentId * o.courseId) % removeValue == 0)); int partLength = filteredList.Count / numberOfRemoveThreads; for (int i = 0; i < numberOfRemoveThreads - 1; ++i) { var partOfFilteredList = filteredList.GetRange(i * partLength, partLength); threads.Add(new Thread(() => RemoveOffsets(partOfFilteredList, table))); threads.Last().Start(); } var lastPartOfFilteredList = filteredList.GetRange((numberOfRemoveThreads - 1) * partLength, filteredList.Count - (numberOfRemoveThreads - 1) * partLength); threads.Add(new Thread(() => RemoveOffsets(filteredList, table))); threads.Last().Start(); for (int i = numberOfAddThreads; i < threads.Count; ++i) { threads[i].Join(); } for (int i = 0; i < numberOfIdStudents; ++i) { for (int j = 0; j < numberOfIdCourses; ++j) { Assert.AreEqual(i * j % removeValue != 0, table.Contains(i, j)); } } int numberOfOffsets = 0; foreach (var r in table.Content) { numberOfOffsets += r.Length; } Assert.AreEqual(numberOfIdStudents * numberOfIdCourses - numberOfRemovedOffsets, numberOfOffsets); }