# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.


# A stub file to remind us to write this class.

#from wireless_automation.chrome_device import chrome_device_factory
#from wireless_automation.chrome_device import chrome_device_base
#import unittest
#
#
#class test_DeviceFactory(unittest.TestCase):
#    def setUp(self):
#        pass
#
#    def tearDown(self):
#        pass
#
#    def test_make_one(self):
#        config = chrome_device_factory.DutFactory.get_default_config()
#        cd = chrome_device_factory.DutFactory(config)
#        assert isinstance(cd, chrome_device_base.DutInterface)
#
#    def _bad_config_breaks(self):
#        config = chrome_device_factory.DutFactory.get_default_config()
#        config['bad_value'] = 'here'
#        cd = chrome_device_factory.DutFactory(config)
