114 lines
4.6 KiB
Python
114 lines
4.6 KiB
Python
|
#!/usr/bin/env python
|
||
|
# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
|
||
|
#
|
||
|
# Use of this source code is governed by a BSD-style license
|
||
|
# that can be found in the LICENSE file in the root of the source
|
||
|
# tree. An additional intellectual property rights grant can be found
|
||
|
# in the file PATENTS. All contributing project authors may
|
||
|
# be found in the AUTHORS file in the root of the source tree.
|
||
|
|
||
|
import unittest
|
||
|
import webrtc.data_helper
|
||
|
|
||
|
class Test(unittest.TestCase):
|
||
|
|
||
|
def setUp(self):
|
||
|
# Simulate frame data from two different test runs, with 2 frames each.
|
||
|
self.frame_data_0 = [{'frame_number': 0, 'ssim': 0.5, 'psnr': 30.5},
|
||
|
{'frame_number': 1, 'ssim': 0.55, 'psnr': 30.55}]
|
||
|
self.frame_data_1 = [{'frame_number': 0, 'ssim': 0.6, 'psnr': 30.6},
|
||
|
{'frame_number': 0, 'ssim': 0.66, 'psnr': 30.66}]
|
||
|
self.all_data = [self.frame_data_0, self.frame_data_1]
|
||
|
|
||
|
# Test with frame_number column in a non-first position sice we need to
|
||
|
# support reordering that to be able to use the gviz_api as we want.
|
||
|
self.type_description = {
|
||
|
'ssim': ('number', 'SSIM'),
|
||
|
'frame_number': ('number', 'Frame number'),
|
||
|
'psnr': ('number', 'PSRN'),
|
||
|
}
|
||
|
self.names = ["Test 0", "Test 1"]
|
||
|
self.configurations = [
|
||
|
[{'name': 'name', 'value': 'Test 0'},
|
||
|
{'name': 'test_number', 'value': '13'},
|
||
|
{'name': 'input_filename', 'value': 'foreman_cif.yuv'},
|
||
|
],
|
||
|
[{'name': 'name', 'value': 'Test 1'},
|
||
|
{'name': 'test_number', 'value': '5'},
|
||
|
{'name': 'input_filename', 'value': 'foreman_cif.yuv'},
|
||
|
],
|
||
|
]
|
||
|
|
||
|
def testCreateData(self):
|
||
|
messages = []
|
||
|
helper = webrtc.data_helper.DataHelper(self.all_data, self.type_description,
|
||
|
self.names, messages)
|
||
|
description, data_table = helper.CreateData('ssim')
|
||
|
self.assertEqual(3, len(description))
|
||
|
self.assertTrue('frame_number' in description)
|
||
|
self.assertTrue('ssim_0' in description)
|
||
|
self.assertTrue('number' in description['ssim_0'][0])
|
||
|
self.assertTrue('Test 0' in description['ssim_0'][1])
|
||
|
self.assertTrue('ssim_1' in description)
|
||
|
self.assertTrue('number' in description['ssim_1'][0])
|
||
|
self.assertTrue('Test 1' in description['ssim_1'][1])
|
||
|
|
||
|
self.assertEqual(0, len(messages))
|
||
|
|
||
|
self.assertEquals(2, len(data_table))
|
||
|
row = data_table[0]
|
||
|
self.assertEquals(0, row['frame_number'])
|
||
|
self.assertEquals(0.5, row['ssim_0'])
|
||
|
self.assertEquals(0.6, row['ssim_1'])
|
||
|
row = data_table[1]
|
||
|
self.assertEquals(1, row['frame_number'])
|
||
|
self.assertEquals(0.55, row['ssim_0'])
|
||
|
self.assertEquals(0.66, row['ssim_1'])
|
||
|
|
||
|
description, data_table = helper.CreateData('psnr')
|
||
|
self.assertEqual(3, len(description))
|
||
|
self.assertTrue('frame_number' in description)
|
||
|
self.assertTrue('psnr_0' in description)
|
||
|
self.assertTrue('psnr_1' in description)
|
||
|
self.assertEqual(0, len(messages))
|
||
|
|
||
|
self.assertEquals(2, len(data_table))
|
||
|
row = data_table[0]
|
||
|
self.assertEquals(0, row['frame_number'])
|
||
|
self.assertEquals(30.5, row['psnr_0'])
|
||
|
self.assertEquals(30.6, row['psnr_1'])
|
||
|
row = data_table[1]
|
||
|
self.assertEquals(1, row['frame_number'])
|
||
|
self.assertEquals(30.55, row['psnr_0'])
|
||
|
self.assertEquals(30.66, row['psnr_1'])
|
||
|
|
||
|
def testGetOrdering(self):
|
||
|
""" Tests that the ordering help method returns a list with frame_number
|
||
|
first and the rest sorted alphabetically """
|
||
|
messages = []
|
||
|
helper = webrtc.data_helper.DataHelper(self.all_data, self.type_description,
|
||
|
self.names, messages)
|
||
|
description, _ = helper.CreateData('ssim')
|
||
|
columns = helper.GetOrdering(description)
|
||
|
self.assertEqual(3, len(columns))
|
||
|
self.assertEqual(0, len(messages))
|
||
|
self.assertEqual('frame_number', columns[0])
|
||
|
self.assertEqual('ssim_0', columns[1])
|
||
|
self.assertEqual('ssim_1', columns[2])
|
||
|
|
||
|
def testCreateConfigurationTable(self):
|
||
|
messages = []
|
||
|
helper = webrtc.data_helper.DataHelper(self.all_data, self.type_description,
|
||
|
self.names, messages)
|
||
|
description, data = helper.CreateConfigurationTable(self.configurations)
|
||
|
self.assertEqual(3, len(description)) # 3 columns
|
||
|
self.assertEqual(2, len(data)) # 2 data sets
|
||
|
self.assertTrue(description.has_key('name'))
|
||
|
self.assertTrue(description.has_key('test_number'))
|
||
|
self.assertTrue(description.has_key('input_filename'))
|
||
|
self.assertEquals('Test 0', data[0]['name'])
|
||
|
self.assertEquals('Test 1', data[1]['name'])
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
unittest.main()
|