blob: 44fc74ddbc729b31664fb7125b2d1a205dfb626c [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
kjellander@webrtc.org689cb302011-11-07 15:25:47 +000010import unittest
11import webrtc.data_helper
12
13class Test(unittest.TestCase):
14
15 def setUp(self):
16 # Simulate frame data from two different test runs, with 2 frames each.
phoglund@webrtc.org5d3713932013-03-07 09:59:43 +000017 self.frame_data_0 = [{'frame_number': 0, 'ssim': 0.5, 'psnr': 30.5},
kjellander@webrtc.org689cb302011-11-07 15:25:47 +000018 {'frame_number': 1, 'ssim': 0.55, 'psnr': 30.55}]
19 self.frame_data_1 = [{'frame_number': 0, 'ssim': 0.6, 'psnr': 30.6},
20 {'frame_number': 0, 'ssim': 0.66, 'psnr': 30.66}]
Henrik Kjellander57e5fd22015-05-25 12:55:39 +020021 self.all_data = [self.frame_data_0, self.frame_data_1]
phoglund@webrtc.org5d3713932013-03-07 09:59:43 +000022
23 # Test with frame_number column in a non-first position sice we need to
kjellander@webrtc.org689cb302011-11-07 15:25:47 +000024 # support reordering that to be able to use the gviz_api as we want.
25 self.type_description = {
26 'ssim': ('number', 'SSIM'),
27 'frame_number': ('number', 'Frame number'),
28 'psnr': ('number', 'PSRN'),
29 }
30 self.names = ["Test 0", "Test 1"]
kjellander@webrtc.org418bce52011-12-05 16:29:21 +000031 self.configurations = [
32 [{'name': 'name', 'value': 'Test 0'},
33 {'name': 'test_number', 'value': '13'},
34 {'name': 'input_filename', 'value': 'foreman_cif.yuv'},
35 ],
36 [{'name': 'name', 'value': 'Test 1'},
37 {'name': 'test_number', 'value': '5'},
38 {'name': 'input_filename', 'value': 'foreman_cif.yuv'},
39 ],
40 ]
41
kjellander@webrtc.org689cb302011-11-07 15:25:47 +000042 def testCreateData(self):
43 messages = []
44 helper = webrtc.data_helper.DataHelper(self.all_data, self.type_description,
45 self.names, messages)
46 description, data_table = helper.CreateData('ssim')
47 self.assertEqual(3, len(description))
48 self.assertTrue('frame_number' in description)
49 self.assertTrue('ssim_0' in description)
50 self.assertTrue('number' in description['ssim_0'][0])
51 self.assertTrue('Test 0' in description['ssim_0'][1])
52 self.assertTrue('ssim_1' in description)
53 self.assertTrue('number' in description['ssim_1'][0])
54 self.assertTrue('Test 1' in description['ssim_1'][1])
kjellander@webrtc.org418bce52011-12-05 16:29:21 +000055
56 self.assertEqual(0, len(messages))
57
kjellander@webrtc.org689cb302011-11-07 15:25:47 +000058 self.assertEquals(2, len(data_table))
59 row = data_table[0]
60 self.assertEquals(0, row['frame_number'])
61 self.assertEquals(0.5, row['ssim_0'])
62 self.assertEquals(0.6, row['ssim_1'])
63 row = data_table[1]
64 self.assertEquals(1, row['frame_number'])
65 self.assertEquals(0.55, row['ssim_0'])
66 self.assertEquals(0.66, row['ssim_1'])
phoglund@webrtc.org5d3713932013-03-07 09:59:43 +000067
68 description, data_table = helper.CreateData('psnr')
kjellander@webrtc.org689cb302011-11-07 15:25:47 +000069 self.assertEqual(3, len(description))
70 self.assertTrue('frame_number' in description)
71 self.assertTrue('psnr_0' in description)
phoglund@webrtc.org5d3713932013-03-07 09:59:43 +000072 self.assertTrue('psnr_1' in description)
73 self.assertEqual(0, len(messages))
kjellander@webrtc.org689cb302011-11-07 15:25:47 +000074
75 self.assertEquals(2, len(data_table))
76 row = data_table[0]
77 self.assertEquals(0, row['frame_number'])
78 self.assertEquals(30.5, row['psnr_0'])
79 self.assertEquals(30.6, row['psnr_1'])
80 row = data_table[1]
81 self.assertEquals(1, row['frame_number'])
82 self.assertEquals(30.55, row['psnr_0'])
83 self.assertEquals(30.66, row['psnr_1'])
phoglund@webrtc.org5d3713932013-03-07 09:59:43 +000084
kjellander@webrtc.org689cb302011-11-07 15:25:47 +000085 def testGetOrdering(self):
phoglund@webrtc.org5d3713932013-03-07 09:59:43 +000086 """ Tests that the ordering help method returns a list with frame_number
kjellander@webrtc.org689cb302011-11-07 15:25:47 +000087 first and the rest sorted alphabetically """
88 messages = []
89 helper = webrtc.data_helper.DataHelper(self.all_data, self.type_description,
90 self.names, messages)
phoglund@webrtc.org5d3713932013-03-07 09:59:43 +000091 description, _ = helper.CreateData('ssim')
kjellander@webrtc.org689cb302011-11-07 15:25:47 +000092 columns = helper.GetOrdering(description)
93 self.assertEqual(3, len(columns))
94 self.assertEqual(0, len(messages))
95 self.assertEqual('frame_number', columns[0])
96 self.assertEqual('ssim_0', columns[1])
97 self.assertEqual('ssim_1', columns[2])
phoglund@webrtc.org5d3713932013-03-07 09:59:43 +000098
kjellander@webrtc.org418bce52011-12-05 16:29:21 +000099 def testCreateConfigurationTable(self):
100 messages = []
101 helper = webrtc.data_helper.DataHelper(self.all_data, self.type_description,
102 self.names, messages)
103 description, data = helper.CreateConfigurationTable(self.configurations)
104 self.assertEqual(3, len(description)) # 3 columns
105 self.assertEqual(2, len(data)) # 2 data sets
106 self.assertTrue(description.has_key('name'))
107 self.assertTrue(description.has_key('test_number'))
108 self.assertTrue(description.has_key('input_filename'))
109 self.assertEquals('Test 0', data[0]['name'])
110 self.assertEquals('Test 1', data[1]['name'])
phoglund@webrtc.org5d3713932013-03-07 09:59:43 +0000111
kjellander@webrtc.org689cb302011-11-07 15:25:47 +0000112if __name__ == "__main__":
113 unittest.main()