blob: 9aa020e3a37b8371e03246629e801890cf77a577 [file] [log] [blame]
kjellander@webrtc.org689cb302011-11-07 15:25:47 +00001#!/usr/bin/env python
2# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
3#
4# Use of this source code is governed by a BSD-style license
5# that can be found in the LICENSE file in the root of the source
6# tree. An additional intellectual property rights grant can be found
7# in the file PATENTS. All contributing project authors may
8# be found in the AUTHORS file in the root of the source tree.
9
10__author__ = 'kjellander@webrtc.org (Henrik Kjellander)'
11
12import unittest
13import webrtc.data_helper
14
15class Test(unittest.TestCase):
16
17 def setUp(self):
18 # Simulate frame data from two different test runs, with 2 frames each.
19 self.frame_data_0 = [{'frame_number': 0, 'ssim': 0.5, 'psnr': 30.5},
20 {'frame_number': 1, 'ssim': 0.55, 'psnr': 30.55}]
21 self.frame_data_1 = [{'frame_number': 0, 'ssim': 0.6, 'psnr': 30.6},
22 {'frame_number': 0, 'ssim': 0.66, 'psnr': 30.66}]
23 self.all_data = [ self.frame_data_0, self.frame_data_1 ]
24
25 # Test with frame_number column in a non-first position sice we need to
26 # support reordering that to be able to use the gviz_api as we want.
27 self.type_description = {
28 'ssim': ('number', 'SSIM'),
29 'frame_number': ('number', 'Frame number'),
30 'psnr': ('number', 'PSRN'),
31 }
32 self.names = ["Test 0", "Test 1"]
33
34 def testCreateData(self):
35 messages = []
36 helper = webrtc.data_helper.DataHelper(self.all_data, self.type_description,
37 self.names, messages)
38 description, data_table = helper.CreateData('ssim')
39 self.assertEqual(3, len(description))
40 self.assertTrue('frame_number' in description)
41 self.assertTrue('ssim_0' in description)
42 self.assertTrue('number' in description['ssim_0'][0])
43 self.assertTrue('Test 0' in description['ssim_0'][1])
44 self.assertTrue('ssim_1' in description)
45 self.assertTrue('number' in description['ssim_1'][0])
46 self.assertTrue('Test 1' in description['ssim_1'][1])
47
48 self.assertEqual(0, len(messages))
49
50 self.assertEquals(2, len(data_table))
51 row = data_table[0]
52 self.assertEquals(0, row['frame_number'])
53 self.assertEquals(0.5, row['ssim_0'])
54 self.assertEquals(0.6, row['ssim_1'])
55 row = data_table[1]
56 self.assertEquals(1, row['frame_number'])
57 self.assertEquals(0.55, row['ssim_0'])
58 self.assertEquals(0.66, row['ssim_1'])
59
60 description, data_table = helper.CreateData('psnr')
61 self.assertEqual(3, len(description))
62 self.assertTrue('frame_number' in description)
63 self.assertTrue('psnr_0' in description)
64 self.assertTrue('psnr_1' in description)
65 self.assertEqual(0, len(messages))
66
67 self.assertEquals(2, len(data_table))
68 row = data_table[0]
69 self.assertEquals(0, row['frame_number'])
70 self.assertEquals(30.5, row['psnr_0'])
71 self.assertEquals(30.6, row['psnr_1'])
72 row = data_table[1]
73 self.assertEquals(1, row['frame_number'])
74 self.assertEquals(30.55, row['psnr_0'])
75 self.assertEquals(30.66, row['psnr_1'])
76
77 def testGetOrdering(self):
78 """ Tests that the ordering help method returns a list with frame_number
79 first and the rest sorted alphabetically """
80 messages = []
81 helper = webrtc.data_helper.DataHelper(self.all_data, self.type_description,
82 self.names, messages)
83 description, data_table = helper.CreateData('ssim')
84 columns = helper.GetOrdering(description)
85 self.assertEqual(3, len(columns))
86 self.assertEqual(0, len(messages))
87 self.assertEqual('frame_number', columns[0])
88 self.assertEqual('ssim_0', columns[1])
89 self.assertEqual('ssim_1', columns[2])
90
91if __name__ == "__main__":
92 unittest.main()