def test_findConflictsBetweenProposals(self): s = self.proposal.session_set.all()[0] src0 = self.proposal.source_set.all()[0] tpcode = self.proposal.pcode # create a new proposal w/ sessions and sources newP = createProposal() newS = self.createSession(newP) newS.receivers.add(Receiver.objects.get(abbreviation = 'Q')) newS.receivers.add(Receiver.objects.get(abbreviation = '800')) newS.save() src1 = self.createSrc(newP) src2 = self.createSrc(newP) # Look for conflicts - there should be none sc = SourceConflicts() sc.findConflictsBetweenProposals(self.proposal, newP) self.assertEqual(1, len(sc.conflicts.keys())) self.assertEqual(tpcode, sc.conflicts[tpcode]['proposal'].pcode) self.assertEqual('Rcvr4_6', sc.conflicts[tpcode]['lowestRx'].name) self.assertAlmostEqual(0.0014544410433286077 , sc.conflicts[tpcode]['searchRadius'] , 6) self.assertEqual(0, len(sc.conflicts[tpcode]['conflicts'])) # now make a conflict src1.target_name = src0.target_name src1.ra = src0.ra src1.dec = src0.dec src1.save() # make sure we detect it sc.conflicts = {} sc.distances = {} sc.findConflictsBetweenProposals(self.proposal, newP) self.assertEqual(1, len(sc.conflicts[tpcode]['conflicts'])) # check out the only conflict cf = sc.conflicts[tpcode]['conflicts'][0] self.assertEqual(src0.id, cf['targetSrc'].id) self.assertEqual(src1.id, cf['searchedSrc'].id) self.assertEqual('GBT10A-009', cf['searchedProp'].pcode) self.assertEqual(0, cf['level']) self.assertAlmostEqual(0.00000, cf['distance'], 5) # make another conflict - a little more subtle src2.target_name = src0.target_name + "!" src2.ra = src0.ra + (src0.ra*0.0002) src2.dec = src0.dec - (src0.dec*0.0002) src2.save() # make sure we detect both sc.conflicts = {} sc.distances = {} sc.findConflictsBetweenProposals(self.proposal, newP) # check out the new conflict self.assertEqual(2, len(sc.conflicts[tpcode]['conflicts'])) cf = sc.conflicts[tpcode]['conflicts'][1] self.assertEqual(src0.id, cf['targetSrc'].id) self.assertEqual(src2.id, cf['searchedSrc'].id) self.assertEqual('GBT10A-009', cf['searchedProp'].pcode) self.assertEqual(0, cf['level']) self.assertAlmostEqual(0.0009417, cf['distance'], 5)