1cef7893435aa41160dd1255c43cb8498279738ccChris Craikimport unittest 2cef7893435aa41160dd1255c43cb8498279738ccChris Craikimport pickle 3cef7893435aa41160dd1255c43cb8498279738ccChris Craik 4cef7893435aa41160dd1255c43cb8498279738ccChris Craikfrom common import MTurkCommon 5cef7893435aa41160dd1255c43cb8498279738ccChris Craik 6cef7893435aa41160dd1255c43cb8498279738ccChris Craikclass TestHITPersistence(MTurkCommon): 7cef7893435aa41160dd1255c43cb8498279738ccChris Craik def create_hit_result(self): 8cef7893435aa41160dd1255c43cb8498279738ccChris Craik return self.conn.create_hit( 9cef7893435aa41160dd1255c43cb8498279738ccChris Craik question=self.get_question(), **self.get_hit_params() 10cef7893435aa41160dd1255c43cb8498279738ccChris Craik ) 11cef7893435aa41160dd1255c43cb8498279738ccChris Craik 12cef7893435aa41160dd1255c43cb8498279738ccChris Craik def test_pickle_hit_result(self): 13cef7893435aa41160dd1255c43cb8498279738ccChris Craik result = self.create_hit_result() 14cef7893435aa41160dd1255c43cb8498279738ccChris Craik new_result = pickle.loads(pickle.dumps(result)) 15cef7893435aa41160dd1255c43cb8498279738ccChris Craik 16cef7893435aa41160dd1255c43cb8498279738ccChris Craik def test_pickle_deserialized_version(self): 17cef7893435aa41160dd1255c43cb8498279738ccChris Craik """ 18cef7893435aa41160dd1255c43cb8498279738ccChris Craik It seems the technique used to store and reload the object must 19cef7893435aa41160dd1255c43cb8498279738ccChris Craik result in an equivalent object, or subsequent pickles may fail. 20cef7893435aa41160dd1255c43cb8498279738ccChris Craik This tests a double-pickle to elicit that error. 21cef7893435aa41160dd1255c43cb8498279738ccChris Craik """ 22cef7893435aa41160dd1255c43cb8498279738ccChris Craik result = self.create_hit_result() 23cef7893435aa41160dd1255c43cb8498279738ccChris Craik new_result = pickle.loads(pickle.dumps(result)) 24cef7893435aa41160dd1255c43cb8498279738ccChris Craik pickle.dumps(new_result) 25cef7893435aa41160dd1255c43cb8498279738ccChris Craik 26cef7893435aa41160dd1255c43cb8498279738ccChris Craikif __name__ == '__main__': 27cef7893435aa41160dd1255c43cb8498279738ccChris Craik unittest.main() 28