1# Copyright 2014 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import unittest
6
7# Generated files
8# pylint: disable=F0401
9import sample_import_mojom
10import sample_service_mojom
11
12
13class EnumBindingsTest(unittest.TestCase):
14
15  # Testing enum classes are in the right module.
16  def testModule(self):
17    self.assertEquals(sample_import_mojom.Shape.__module__,
18                      'sample_import_mojom')
19
20  # Testing that enum class have expected constant values.
21  def testTopLevelEnumGeneration(self):
22    self.assertEquals(sample_import_mojom.Shape.RECTANGLE, 1)
23    self.assertEquals(sample_import_mojom.Shape.CIRCLE, 2)
24    self.assertEquals(sample_import_mojom.Shape.TRIANGLE, 3)
25    self.assertEquals(sample_import_mojom.Shape.LAST,
26                      sample_import_mojom.Shape.TRIANGLE)
27
28    self.assertEquals(sample_import_mojom.AnotherShape.RECTANGLE, 10)
29    self.assertEquals(sample_import_mojom.AnotherShape.CIRCLE, 11)
30    self.assertEquals(sample_import_mojom.AnotherShape.TRIANGLE, 12)
31
32    self.assertEquals(sample_import_mojom.YetAnotherShape.RECTANGLE, 20)
33    self.assertEquals(sample_import_mojom.YetAnotherShape.CIRCLE, 21)
34    self.assertEquals(sample_import_mojom.YetAnotherShape.TRIANGLE, 22)
35
36  # Testing that internal enum class have expected constant values.
37  def testInternalEnumGeneration(self):
38    self.assertEquals(sample_service_mojom.Bar.Type.VERTICAL, 1)
39    self.assertEquals(sample_service_mojom.Bar.Type.HORIZONTAL, 2)
40    self.assertEquals(sample_service_mojom.Bar.Type.BOTH, 3)
41    self.assertEquals(sample_service_mojom.Bar.Type.INVALID, 4)
42
43  # Testing an enum class cannot be instantiated.
44  def testNonInstantiableEnum(self):
45    with self.assertRaises(TypeError):
46      sample_import_mojom.Shape()
47
48  # Testing an enum does not contain the VALUES constant.
49  def testNoVALUESConstant(self):
50    with self.assertRaises(AttributeError):
51      # pylint: disable=W0104
52      sample_import_mojom.Shape.VALUES
53
54  # Testing enum values are frozen.
55  def testEnumFrozen(self):
56    with self.assertRaises(AttributeError):
57      sample_import_mojom.Shape.RECTANGLE = 2
58    with self.assertRaises(AttributeError):
59      del sample_import_mojom.Shape.RECTANGLE
60    with self.assertRaises(AttributeError):
61      sample_import_mojom.Shape.NewShape = 4
62