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