def testLetsUpTo5PercentWhen20Countries(self):
     testData = np.array([[int(675000*0.025) for r in range(20)] for k in range(15)], dtype=np.int64)
     waitlist, admitted = sevenPcntRuleWaitlist(testData)
     for elem in waitlist.flatten():
         self.assertEqual(0, elem)
     for elem in admitted.flatten():
         self.assertEqual(int(675000*0.025), elem)
 def testIdentifiesNoWaitlistAsHavingWaitOfZeroToZeroYears(self):
     testData = np.array([[int(675000*0.05) for r in range(10)] for k in range(15)], dtype=np.int64)
     waitlist, admitted = sevenPcntRuleWaitlist(testData)
     waitTimes = computeExpectedAdmissionYear(admitted, waitlist)
     self.assertTrue(np.all(waitlist == 0))
     self.assertTrue(np.all(waitTimes[:,:,0] == 0))
     self.assertTrue(np.all(waitTimes[:,:,1] == 0))
 def testLetsUpTo47KWhenFewerThan15Countries(self):
     testData = np.array([[int(675000*0.07) for r in range(10)] for k in range(15)], dtype=np.int64)
     waitlist, admitted = sevenPcntRuleWaitlist(testData)
     for elem in waitlist.flatten():
         self.assertEqual(0, elem)
     for elem in admitted.flatten():
         self.assertEqual(int(675000*0.07), elem)
 def testIdentifiesNoWaitlistAsHavingWaitOfZeroToZeroYears(self):
     testData = np.array([[int(675000*0.1) for r in range(15)] for k in range(15)], dtype=np.int64)
     waitlist, admitted = sevenPcntRuleWaitlist(testData)
     waitTimes = computeExpectedAdmissionYear(admitted, waitlist)
     self.confirmDidNotAdmitMoreThanApplied(testData, waitlist, admitted)
     self.confirmObeysSevenPercentRuleAnd675KCap(testData, waitlist, admitted)
     self.assertTrue(np.all(waitlist > 0))
     self.assertTrue(np.all(waitTimes[:,:,0] >= 0))
     self.assertTrue(np.all(waitTimes[:,:,1] >= 1))
 def testLimitsEntryTo5PercentWhenExcessApplicantsAccross20Countries(self):
     testData = np.array([[int(675000*0.1) for r in range(20)] for k in range(15)], dtype=np.int64)
     expectedWaitlist = np.array([[int(675000*0.05)*k for r in range(20)] for k in range(16)], dtype=np.int64)
     expectedWaitlist[:15,:] += np.int64(675000*0.05)
     waitlist, admitted = sevenPcntRuleWaitlist(testData, 1)
     for elem in admitted.flatten():
         self.assertEqual(int(675000*0.05), elem)
     for e, g in zip(waitlist.flatten(), expectedWaitlist.flatten()):
         self.assertEqual(e, g)
Beispiel #6
0
 def __init__(self, parser):
     headers = [s for s in next(parser)]
     listTable = [[
         cell for ind, cell in enumerate(row) if 'Total' not in headers[ind]
     ] for row in parser][::-1]
     self.headers = [
         s for s in headers if 'Total' not in s and 'Year' not in s
     ]
     table = np.array(listTable, dtype=float).astype(int)
     self.years = table[:, 0]
     self._table = table[:, 1:]
     self._waitlist, self._accepted = sevenPcntRuleWaitlist(self._table)
     self._expectedWaitTime = computeExpectedAdmissionYear(
         self._accepted, self._waitlist)
     self._countryLookup = {
         h: ind - 1
         for ind, h in enumerate(self.headers)
     }
     self._yearLookup = {year: ind for ind, year in enumerate(self.years)}
 def testDoesNotCrashWhileComputingExpectedWaitimes(self):
     testData = np.array([[0, 0, 0, 0] + [(r+1)*10000 for r in range(25)] for k in range(25)], dtype=np.int64)
     waitlist, admitted = sevenPcntRuleWaitlist(testData)
     waitTimes = computeExpectedAdmissionYear(admitted, waitlist)
     self.assertTrue(True)
 def testDoesNotFailOnCountryContributingZeroImmigrants(self):
     testData = np.array([[0, 0, 0, 0] + [(r+1)*10000 for r in range(25)] for k in range(15)], dtype=np.int64)
     waitlist, admitted = sevenPcntRuleWaitlist(testData)
     self.confirmDidNotAdmitMoreThanApplied(testData, waitlist=waitlist, admitted=admitted)
     self.confirmObeysSevenPercentRuleAnd675KCap(testData, waitlist, admitted)
 def testDoesNotAllowMoreThan7PercentOfASingleCountry(self):
     testData = np.array([[(r+1)*10000 for r in range(25)] for k in range(15)], dtype=np.int64)
     waitlist, admitted = sevenPcntRuleWaitlist(testData)
     self.confirmDidNotAdmitMoreThanApplied(testData, waitlist=waitlist, admitted=admitted)
     self.confirmObeysSevenPercentRuleAnd675KCap(testData, waitlist, admitted)