예제 #1
0
 def test_option_type_templates(self):
     outcomes = ["oink", "oink2"]
     for i in range(len(self.option_types)):
         t = self.option_types[i]
         qtext = RealityCheckQuestion.encodeText(t, 'oink', outcomes, 'my-category')
         q = RealityCheckQuestion.populatedJSONForTemplate(RealityCheckTemplate.defaultTemplateForType(t), qtext)
         self.assertEqual(q['type'], t)
예제 #2
0
 def test_option_hexification(self):
     outcomes = ['thing1', 'thing2', 'thing3']
     qtext = RealityCheckQuestion.encodeText('multiple-select', 'oink', outcomes, 'my-category')
     q = RealityCheckQuestion.populatedJSONForTemplate(RealityCheckTemplate.defaultTemplateForType('multiple-select'), qtext)
     self.assertEqual(q['type'], 'multiple-select')
     
     self.assertEqual(RealityCheckQuestion.answerToBytes32([False], q), '0x0000000000000000000000000000000000000000000000000000000000000000')
     self.assertEqual(RealityCheckQuestion.answerToBytes32([False, False], q), '0x0000000000000000000000000000000000000000000000000000000000000000')
     self.assertEqual(RealityCheckQuestion.answerToBytes32([True], q), '0x0000000000000000000000000000000000000000000000000000000000000001')
     self.assertEqual(RealityCheckQuestion.answerToBytes32([True, False], q), '0x0000000000000000000000000000000000000000000000000000000000000001')
     self.assertEqual(RealityCheckQuestion.answerToBytes32([False, True], q), '0x0000000000000000000000000000000000000000000000000000000000000002')
     self.assertEqual(RealityCheckQuestion.answerToBytes32([True, True], q), '0x0000000000000000000000000000000000000000000000000000000000000003')
     self.assertEqual(RealityCheckQuestion.answerToBytes32([True, False, True], q), '0x0000000000000000000000000000000000000000000000000000000000000005')
예제 #3
0
 def test_answer_strings(self):
     q = RealityCheckQuestion.populatedJSONForTemplate(RealityCheckTemplate.defaultTemplateForType('bool'), '')
     self.assertEqual(RealityCheckQuestion.getAnswerString(q, '0x0000000000000000000000000000000000000000000000000000000000000001'), 'Yes')
     self.assertEqual(RealityCheckQuestion.getAnswerString(q, '0x0000000000000000000000000000000000000000000000000000000000000000'), 'No')
     self.assertEqual(RealityCheckQuestion.getAnswerString(q, '0000000000000000000000000000000000000000000000000000000000000001'), 'Yes')
     self.assertEqual(RealityCheckQuestion.getAnswerString(q, '0000000000000000000000000000000000000000000000000000000000000000'), 'No')
     self.assertEqual(RealityCheckQuestion.getAnswerString(q, '0000000000000000000000000000000000000000000000000000000000000003'), '')
     self.assertEqual(RealityCheckQuestion.getAnswerString(q, '0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'), 'Invalid')
예제 #4
0
 def populatedJSON(self):
     tid = self.template_id
     t = RCTemplate.objects.get(pk=tid)
     if t is None:
         print("missing template, skipping")
         return None
     else:
         template_text = t.question_text
         return RealityCheckQuestion.populatedJSONForTemplate(
             template_text, self.question)
예제 #5
0
 def test_multiple_selects(self):
     outcomes = ['thing1', 'thing2', 'thing3']
     qtext = RealityCheckQuestion.encodeText('multiple-select', 'oink', outcomes, 'my-category')
     q = RealityCheckQuestion.populatedJSONForTemplate(RealityCheckTemplate.defaultTemplateForType('multiple-select'), qtext)
     self.assertEqual(RealityCheckQuestion.getAnswerString(q, '0x0000000000000000000000000000000000000000000000000000000000000000'), '')
     self.assertEqual(RealityCheckQuestion.getAnswerString(q, '0x0000000000000000000000000000000000000000000000000000000000000005'), 'thing1 / thing3')
     self.assertEqual(RealityCheckQuestion.getAnswerString(q, '0x0000000000000000000000000000000000000000000000000000000000000002'), 'thing2')
     self.assertEqual(RealityCheckQuestion.getAnswerString(q, '0x0000000000000000000000000000000000000000000000000000000000000003'), 'thing1 / thing2')
예제 #6
0
 def test_datetimes(self):
     q = RealityCheckQuestion.populatedJSONForTemplate(RealityCheckTemplate.defaultTemplateForType('datetime'), '')
     self.assertEqual(RealityCheckQuestion.getAnswerString(q, '0x0000000000000000000000000000000000000000000000000000000000000000'), '1970/1/1')
     self.assertEqual(RealityCheckQuestion.getAnswerString(q, '0x000000000000000000000000000000000000000000000000000000005B0E02F7'), '2018/5/30')
예제 #7
0
 def test_uints(self):
     q = RealityCheckQuestion.populatedJSONForTemplate(RealityCheckTemplate.defaultTemplateForType('uint'), '')
     self.assertEqual(RealityCheckQuestion.getAnswerString(q, '0x0000000000000000000000000000000000000000000000000000000000000000'), '0')
     self.assertEqual(RealityCheckQuestion.getAnswerString(q, '0x0000000000000000000000000000000000000000000000000DE0B6B3A7640000'), '1')
     self.assertEqual(RealityCheckQuestion.getAnswerString(q, '0x000000000000000000000000000000000000000000000000016345785D8A0000'), '0.1')
     self.assertEqual(RealityCheckQuestion.getAnswerString(q, '0x0000000000000000000000000000000000000000000000001BC16D674EC80000'), '2')
예제 #8
0
 def test_no_decimals(self):
     q = RealityCheckQuestion.populatedJSONForTemplate(RealityCheckTemplate.defaultTemplateForType('uint'), '')
     q['decimals'] = 0
     self.assertEqual(RealityCheckQuestion.getAnswerString(q, '0x0000000000000000000000000000000000000000000000000000000000000000'), '0')
     self.assertEqual(RealityCheckQuestion.getAnswerString(q, '0x0000000000000000000000000000000000000000000000000000000000000001'), '1')
     self.assertEqual(RealityCheckQuestion.getAnswerString(q, '0x0000000000000000000000000000000000000000000000000000000000000002'), '2')
예제 #9
0
 def test_answer_formatting(self):
     q = RealityCheckQuestion.populatedJSONForTemplate(RealityCheckTemplate.defaultTemplateForType('bool'), '')
     self.assertEqual(RealityCheckQuestion.answerToBytes32(1, q), '0x0000000000000000000000000000000000000000000000000000000000000001')
     self.assertEqual(RealityCheckQuestion.answerToBytes32(0, q), '0x0000000000000000000000000000000000000000000000000000000000000000')
예제 #10
0
 def test_simple_type_templates(self):
     for i in range(len(self.simple_types)):
         t = self.simple_types[i]
         qtext = RealityCheckQuestion.encodeText(t, 'oink', None, 'my-category')
         q = RealityCheckQuestion.populatedJSONForTemplate(RealityCheckTemplate.defaultTemplateForType(t), qtext)
         self.assertEqual(q['type'], t)
예제 #11
0
 def test_unparseable_questions(self):
     qtext = RealityCheckQuestion.encodeText('bool', 'Is the name of the game "The Name of the Game"?', None, 'my-category')
     # mangle the quotation marks as if we did the encoding wrong
     qtext = qtext.replace('\\"', '"')
     q = RealityCheckQuestion.populatedJSONForTemplate(RealityCheckTemplate.defaultTemplateForType('bool'), qtext)
     self.assertEqual(q['type'], 'broken-question')
예제 #12
0
 def currentBestAnswerText(self):
     qdict = self.populatedJSON()
     ans = self.best_answer
     return RealityCheckQuestion.getAnswerString(qdict, ans)