public void TwoQuestions()
        {
            var ai = new AssignmentHandler.AllocationInfo {
                StudentCount = 3
            };

            ai.Documents.AddRange(new List <List <Document> >
            {
                new List <Document> {
                    new Document {
                        Id = 1
                    }
                }, new List <Document> {
                    new Document {
                        Id = 3
                    }
                },
            });

            var docs = AssignmentHandler.CalcStudentDocuments(ai, "0.0.0.0", new Random());

            Assert.True(docs.Count == 2);
            Assert.True(docs[0].Id == 1);
            Assert.True(docs[1].Id == 3);
        }
        public void NoDocumentsLeft_SameIP()
        {
            var ai = new AssignmentHandler.AllocationInfo {
                StudentCount = 3
            };

            ai.Documents.Add(new List <Document> {
                new Document {
                    Id = 1
                }, new Document {
                    Id = 2
                }
            });
            ai.Assignments.Add(1, new List <Assignment> {
                new Assignment {
                    DocumentId = 1, Ip = "0.0.0.0"
                }
            });
            ai.Assignments.Add(2, new List <Assignment> {
                new Assignment {
                    DocumentId = 2, Ip = "0.0.0.0"
                }
            });

            var docs = AssignmentHandler.CalcStudentDocuments(ai, "0.0.0.0", new Random(1));

            Assert.True(docs.Count == 1);
            Assert.True(docs[0].Id == 1);
        }
        public void NoDocuments()
        {
            var ai = new AssignmentHandler.AllocationInfo();

            var docs = AssignmentHandler.CalcStudentDocuments(ai, "0.0.0.0", new Random());

            Assert.True(docs.Count == 0);
        }
        public void TwoQuestions_ManyDocuments()
        {
            var ai = new AssignmentHandler.AllocationInfo {
                StudentCount = 18
            };

            ai.Documents.AddRange(new List <List <Document> >
            {
                new List <Document>
                {
                    new Document {
                        Id = 1
                    },
                    new Document {
                        Id = 3
                    },
                    new Document {
                        Id = 5
                    },
                    new Document {
                        Id = 7
                    },
                    new Document {
                        Id = 9
                    },
                    new Document {
                        Id = 11
                    }
                },
                new List <Document>
                {
                    new Document {
                        Id = 2
                    },
                    new Document {
                        Id = 4
                    },
                    new Document {
                        Id = 6
                    },
                    new Document {
                        Id = 8
                    },
                    new Document {
                        Id = 10
                    },
                    new Document {
                        Id = 12
                    }
                },
            });

            var docs = AssignmentHandler.CalcStudentDocuments(ai, "0.0.0.0", new Random(1));

            Assert.True(docs.Count == 2);
            Assert.True(docs[0].Id == 3);
            Assert.True(docs[1].Id == 2);
        }
        public void NoDocument_ListsEmpty()
        {
            var ai = new AssignmentHandler.AllocationInfo {
                StudentCount = 1
            };

            ai.Documents.Add(new List <Document> ());
            ai.Assignments.Add(1, new List <Assignment>());
            var docs = AssignmentHandler.CalcStudentDocuments(ai, "0.0.0.0", new Random());

            Assert.True(docs.Count == 0);
        }
        public void OneDocument()
        {
            var ai = new AssignmentHandler.AllocationInfo {
                StudentCount = 1
            };

            ai.Documents.Add(new List <Document> {
                new Document {
                    Id = 1
                }
            });

            var docs = AssignmentHandler.CalcStudentDocuments(ai, "0.0.0.0", new Random());

            Assert.True(docs.Count == 1);
            Assert.True(docs[0].Id == 1);
        }
        public void TwoQuestions_SameIP()
        {
            var ai = new AssignmentHandler.AllocationInfo {
                StudentCount = 25
            };

            ai.Documents.AddRange(new List <List <Document> >
            {
                new List <Document>
                {
                    new Document {
                        Id = 1
                    },
                    new Document {
                        Id = 3
                    },
                    new Document {
                        Id = 5
                    },
                    new Document {
                        Id = 7
                    },
                    new Document {
                        Id = 9
                    },
                    new Document {
                        Id = 11
                    }
                },
                new List <Document>
                {
                    new Document {
                        Id = 2
                    },
                    new Document {
                        Id = 4
                    },
                    new Document {
                        Id = 6
                    },
                    new Document {
                        Id = 8
                    },
                    new Document {
                        Id = 10
                    },
                    new Document {
                        Id = 12
                    }
                },
            });
            ai.Assignments.Add(2, new List <Assignment> {
                new Assignment {
                    DocumentId = 2, Ip = "0.0.0.0"
                }
            });

            var docs = AssignmentHandler.CalcStudentDocuments(ai, "0.0.0.0", new Random(1));

            //doc 2 is already taken at this IP, so 4 is assigned instead
            Assert.True(docs.Count == 2);
            Assert.True(docs[0].Id == 3);
            Assert.True(docs[1].Id == 4);
        }