
A table on the top of the page displays the test configurations of the input files present. The displayed string in the legend of each graph is now fetched from test configuration name instead of using the filename. Review URL: http://webrtc-codereview.appspot.com/279006 git-svn-id: http://webrtc.googlecode.com/svn/trunk@1104 4adac7df-926f-26a2-2b94-8c16560cd09d
116 lines
4.7 KiB
Python
116 lines
4.7 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.
|
|
|
|
__author__ = 'kjellander@webrtc.org (Henrik Kjellander)'
|
|
|
|
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, data_table = 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()
|