13551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)# Copyright 2013 The Chromium Authors. All rights reserved.
23551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be
33551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)# found in the LICENSE file.
43551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)import unittest
53551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
63551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)from telemetry.core import gpu_device
73551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
86e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
93551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)class TestGPUDevice(unittest.TestCase):
103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  def testConstruction(self):
113551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    device = gpu_device.GPUDevice(1000, 2000, 'test_vendor', 'test_device')
123551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    self.assertEquals(device.vendor_id, 1000)
133551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    self.assertEquals(device.device_id, 2000)
143551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    self.assertEquals(device.vendor_string, 'test_vendor')
153551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    self.assertEquals(device.device_string, 'test_device')
163551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
173551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  def testFromDict(self):
183551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    dictionary = { 'vendor_id': 3000,
193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                   'device_id': 4000,
203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                   'vendor_string': 'test_vendor_2',
213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                   'device_string': 'test_device_2' }
223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    device = gpu_device.GPUDevice.FromDict(dictionary)
233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    self.assertEquals(device.vendor_id, 3000)
243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    self.assertEquals(device.device_id, 4000)
253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    self.assertEquals(device.vendor_string, 'test_vendor_2')
263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    self.assertEquals(device.device_string, 'test_device_2')
273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
283551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  def testMissingAttrsFromDict(self):
293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    data = {
303551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      'vendor_id': 1,
313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      'device_id': 2,
323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      'vendor_string': 'a',
333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      'device_string': 'b'
343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    }
353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
363551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    for k in data:
373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      data_copy = data.copy()
383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      del data_copy[k]
393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      try:
403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)        gpu_device.GPUDevice.FromDict(data_copy)
413551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)        self.fail('Should raise exception if attribute "%s" is missing' % k)
423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      except AssertionError:
433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)        raise
443551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      except:
453551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)        pass
46