kjellander@webrtc.org | 689cb30 | 2011-11-07 15:25:47 +0000 | [diff] [blame] | 1 | #!/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.org | 689cb30 | 2011-11-07 15:25:47 +0000 | [diff] [blame] | 10 | import unittest |
| 11 | import webrtc.data_helper |
| 12 | |
| 13 | class Test(unittest.TestCase): |
| 14 | |
| 15 | def setUp(self): |
| 16 | # Simulate frame data from two different test runs, with 2 frames each. |
phoglund@webrtc.org | 5d371393 | 2013-03-07 09:59:43 +0000 | [diff] [blame^] | 17 | self.frame_data_0 = [{'frame_number': 0, 'ssim': 0.5, 'psnr': 30.5}, |
kjellander@webrtc.org | 689cb30 | 2011-11-07 15:25:47 +0000 | [diff] [blame] | 18 | {'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}] |
| 21 | self.all_data = [ self.frame_data_0, self.frame_data_1 ] |
phoglund@webrtc.org | 5d371393 | 2013-03-07 09:59:43 +0000 | [diff] [blame^] | 22 | |
| 23 | # Test with frame_number column in a non-first position sice we need to |
kjellander@webrtc.org | 689cb30 | 2011-11-07 15:25:47 +0000 | [diff] [blame] | 24 | # 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.org | 418bce5 | 2011-12-05 16:29:21 +0000 | [diff] [blame] | 31 | 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.org | 689cb30 | 2011-11-07 15:25:47 +0000 | [diff] [blame] | 42 | 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.org | 418bce5 | 2011-12-05 16:29:21 +0000 | [diff] [blame] | 55 | |
| 56 | self.assertEqual(0, len(messages)) |
| 57 | |
kjellander@webrtc.org | 689cb30 | 2011-11-07 15:25:47 +0000 | [diff] [blame] | 58 | 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.org | 5d371393 | 2013-03-07 09:59:43 +0000 | [diff] [blame^] | 67 | |
| 68 | description, data_table = helper.CreateData('psnr') |
kjellander@webrtc.org | 689cb30 | 2011-11-07 15:25:47 +0000 | [diff] [blame] | 69 | self.assertEqual(3, len(description)) |
| 70 | self.assertTrue('frame_number' in description) |
| 71 | self.assertTrue('psnr_0' in description) |
phoglund@webrtc.org | 5d371393 | 2013-03-07 09:59:43 +0000 | [diff] [blame^] | 72 | self.assertTrue('psnr_1' in description) |
| 73 | self.assertEqual(0, len(messages)) |
kjellander@webrtc.org | 689cb30 | 2011-11-07 15:25:47 +0000 | [diff] [blame] | 74 | |
| 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.org | 5d371393 | 2013-03-07 09:59:43 +0000 | [diff] [blame^] | 84 | |
kjellander@webrtc.org | 689cb30 | 2011-11-07 15:25:47 +0000 | [diff] [blame] | 85 | def testGetOrdering(self): |
phoglund@webrtc.org | 5d371393 | 2013-03-07 09:59:43 +0000 | [diff] [blame^] | 86 | """ Tests that the ordering help method returns a list with frame_number |
kjellander@webrtc.org | 689cb30 | 2011-11-07 15:25:47 +0000 | [diff] [blame] | 87 | 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.org | 5d371393 | 2013-03-07 09:59:43 +0000 | [diff] [blame^] | 91 | description, _ = helper.CreateData('ssim') |
kjellander@webrtc.org | 689cb30 | 2011-11-07 15:25:47 +0000 | [diff] [blame] | 92 | 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.org | 5d371393 | 2013-03-07 09:59:43 +0000 | [diff] [blame^] | 98 | |
kjellander@webrtc.org | 418bce5 | 2011-12-05 16:29:21 +0000 | [diff] [blame] | 99 | 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.org | 5d371393 | 2013-03-07 09:59:43 +0000 | [diff] [blame^] | 111 | |
kjellander@webrtc.org | 689cb30 | 2011-11-07 15:25:47 +0000 | [diff] [blame] | 112 | if __name__ == "__main__": |
| 113 | unittest.main() |