def test__create_writers_with_multi_stage_and_map_but_different_path(self): """ Both serializers are created, the xml serializer is *not* cached because the paths differ. """ self._init_map() job_id = self.jobs.next() nrml_path = self.files.next() result = hazard_output._create_writer(job_id, ["db", "xml"], nrml_path, self.x, self.d, True) self.assertEqual(1, self.d.call_count) self.assertEqual(1, self.x.call_count) xml_serializer = self.xmls.next() - 1 self.assertEqual([self.dbs.next() - 1, xml_serializer], [rw() for rw in result.writers]) # We are passing different paths to the method under test. It will # thus call both constructors. The serializers returned are different. result = hazard_output._create_writer(job_id, ["db", "xml"], self.files.next(), self.x, self.d, True) self.assertEqual(2, self.d.call_count) self.assertEqual(2, self.x.call_count) self.assertEqual( [self.dbs.next() - 1, self.xmls.next() - 1], [rw() for rw in result.writers])
def test__create_writers_with_multi_stage_and_map(self): """ Multi-stage XML serialization, both serializers are created, the XML serializer is cached. """ self._init_map() job_id = self.jobs.next() nrml_path = self.files.next() result = hazard_output._create_writer(job_id, ["db", "xml"], nrml_path, self.x, self.d, True) self.assertEqual(1, self.d.call_count) self.assertEqual(1, self.x.call_count) xml_serializer = self.xmls.next() - 1 self.assertEqual([self.dbs.next() - 1, xml_serializer], [rw() for rw in result.writers]) # Next time we call the method under test it will invoke only # the constructor for the db serializer and the cached xml serializer # is returned. # This only works if the function under test is called with the same # 'job_id' and 'nrml_path'. result = hazard_output._create_writer(job_id, ["db", "xml"], nrml_path, self.x, self.d, True) self.assertEqual(2, self.d.call_count) self.assertEqual(1, self.x.call_count) self.assertEqual([self.dbs.next() - 1, xml_serializer], [rw() for rw in result.writers])
def test__create_writer_with_db_only_and_map(self): """Only the db writer is created.""" self._init_map() result = hazard_output._create_writer( self.jobs.next(), ["db"], self.files.next(), self.x, self.d) self.assertEqual(0, self.x.call_count) self.assertEqual(1, self.d.call_count) self.assertEqual(self.dbs.next() - 1, result())
def test__create_writer_with_db_only_and_map(self): """Only the db writer is created.""" self._init_map() result = hazard_output._create_writer(self.jobs.next(), ["db"], self.files.next(), self.x, self.d) self.assertEqual(0, self.x.call_count) self.assertEqual(1, self.d.call_count) self.assertEqual(self.dbs.next() - 1, result())
def test__create_writers_with_single_stage_and_map(self): """ Both serializers are created, no caching of the XML serializers. """ self._init_map() result = hazard_output._create_writer( self.jobs.next(), ["db", "xml"], self.files.next(), self.x, self.d) self.assertEqual(1, self.d.call_count) self.assertEqual(1, self.x.call_count) self.assertEqual([self.dbs.next() - 1, self.xmls.next() - 1], [rw() for rw in result.writers]) # Next time we call the method under test it will invoke the # constructors and the serializers returned are different. result = hazard_output._create_writer( self.jobs.next(), ["db", "xml"], self.files.next(), self.x, self.d) self.assertEqual(2, self.d.call_count) self.assertEqual(2, self.x.call_count) self.assertEqual([self.dbs.next() - 1, self.xmls.next() - 1], [rw() for rw in result.writers])
def test__create_writers_with_multi_stage_and_map_but_different_path(self): """ Both serializers are created, the xml serializer is *not* cached because the paths differ. """ self._init_map() job_id = self.jobs.next() nrml_path = self.files.next() result = hazard_output._create_writer(job_id, ["db", "xml"], nrml_path, self.x, self.d, True) self.assertEqual(1, self.d.call_count) self.assertEqual(1, self.x.call_count) xml_serializer = self.xmls.next() - 1 self.assertEqual([self.dbs.next() - 1, xml_serializer], [rw() for rw in result.writers]) # We are passing different paths to the method under test. It will # thus call both constructors. The serializers returned are different. result = hazard_output._create_writer( job_id, ["db", "xml"], self.files.next(), self.x, self.d, True) self.assertEqual(2, self.d.call_count) self.assertEqual(2, self.x.call_count) self.assertEqual([self.dbs.next() - 1, self.xmls.next() - 1], [rw() for rw in result.writers])
def test__create_writers_with_single_stage_and_map(self): """ Both serializers are created, no caching of the XML serializers. """ self._init_map() result = hazard_output._create_writer(self.jobs.next(), ["db", "xml"], self.files.next(), self.x, self.d) self.assertEqual(1, self.d.call_count) self.assertEqual(1, self.x.call_count) self.assertEqual( [self.dbs.next() - 1, self.xmls.next() - 1], [rw() for rw in result.writers]) # Next time we call the method under test it will invoke the # constructors and the serializers returned are different. result = hazard_output._create_writer(self.jobs.next(), ["db", "xml"], self.files.next(), self.x, self.d) self.assertEqual(2, self.d.call_count) self.assertEqual(2, self.x.call_count) self.assertEqual( [self.dbs.next() - 1, self.xmls.next() - 1], [rw() for rw in result.writers])