| Index: grit/format/policy_templates/writers/adml_writer_unittest.py
 | 
| ===================================================================
 | 
| --- grit/format/policy_templates/writers/adml_writer_unittest.py	(revision 0)
 | 
| +++ grit/format/policy_templates/writers/adml_writer_unittest.py	(revision 0)
 | 
| @@ -0,0 +1,336 @@
 | 
| +#!/usr/bin/python2.4
 | 
| +# Copyright (c) 2011 The Chromium Authors. All rights reserved.
 | 
| +# Use of this source code is governed by a BSD-style license that can be
 | 
| +# found in the LICENSE file.
 | 
| +
 | 
| +
 | 
| +"""Unittests for grit.format.policy_templates.writers.adml_writer."""
 | 
| +
 | 
| +
 | 
| +import os
 | 
| +import sys
 | 
| +import unittest
 | 
| +if __name__ == '__main__':
 | 
| +  sys.path.append(os.path.join(os.path.dirname(sys.argv[0]), '../../../..'))
 | 
| +
 | 
| +
 | 
| +from grit.format.policy_templates.writers import adml_writer
 | 
| +from grit.format.policy_templates.writers import xml_writer_base_unittest
 | 
| +from xml.dom import minidom
 | 
| +
 | 
| +
 | 
| +class AdmlWriterTest(xml_writer_base_unittest.XmlWriterBaseTest):
 | 
| +
 | 
| +  def setUp(self):
 | 
| +    config = {
 | 
| +      'build': 'test',
 | 
| +      'win_supported_os': 'SUPPORTED_TESTOS',
 | 
| +    }
 | 
| +    self.writer = adml_writer.GetWriter(config)
 | 
| +    self.writer.messages = {
 | 
| +      'win_supported_winxpsp2': {
 | 
| +        'text': 'Supported on Test OS or higher',
 | 
| +        'desc': 'blah'
 | 
| +      }
 | 
| +    }
 | 
| +    self.writer.Init()
 | 
| +
 | 
| +  def _InitWriterForAddingPolicyGroups(self, writer):
 | 
| +    '''Initialize the writer for adding policy groups. This method must be
 | 
| +    called before the method "BeginPolicyGroup" can be called. It initializes
 | 
| +    attributes of the writer.
 | 
| +    '''
 | 
| +    writer.BeginTemplate()
 | 
| +
 | 
| +  def _InitWriterForAddingPolicies(self, writer, policy):
 | 
| +    '''Initialize the writer for adding policies. This method must be
 | 
| +    called before the method "WritePolicy" can be called. It initializes
 | 
| +    attributes of the writer.
 | 
| +    '''
 | 
| +    self._InitWriterForAddingPolicyGroups(writer)
 | 
| +    policy_group = {
 | 
| +      'name': 'PolicyGroup',
 | 
| +      'caption': 'Test Caption',
 | 
| +      'desc': 'This is the test description of the test policy group.',
 | 
| +      'policies': policy,
 | 
| +    }
 | 
| +    writer.BeginPolicyGroup(policy_group)
 | 
| +
 | 
| +    string_elements = \
 | 
| +        self.writer._string_table_elem.getElementsByTagName('string')
 | 
| +    for elem in string_elements:
 | 
| +      self.writer._string_table_elem.removeChild(elem)
 | 
| +
 | 
| +  def testEmpty(self):
 | 
| +    self.writer.BeginTemplate()
 | 
| +    self.writer.EndTemplate()
 | 
| +    output = self.writer.GetTemplateText()
 | 
| +    expected_output = (
 | 
| +        '<?xml version="1.0" ?><policyDefinitionResources'
 | 
| +        ' revision="1.0" schemaVersion="1.0"><displayName/><description/>'
 | 
| +        '<resources><stringTable><string id="SUPPORTED_TESTOS">Supported on'
 | 
| +        ' Test OS or higher</string></stringTable><presentationTable/>'
 | 
| +        '</resources></policyDefinitionResources>')
 | 
| +    self.AssertXMLEquals(output, expected_output)
 | 
| +
 | 
| +  def testPolicyGroup(self):
 | 
| +    empty_policy_group = {
 | 
| +      'name': 'PolicyGroup',
 | 
| +      'caption': 'Test Group Caption',
 | 
| +      'desc': 'This is the test description of the test policy group.',
 | 
| +      'policies': [
 | 
| +          {'name': 'PolicyStub2',
 | 
| +           'type': 'main'},
 | 
| +          {'name': 'PolicyStub1',
 | 
| +           'type': 'main'},
 | 
| +      ],
 | 
| +    }
 | 
| +    self._InitWriterForAddingPolicyGroups(self.writer)
 | 
| +    self.writer.BeginPolicyGroup(empty_policy_group)
 | 
| +    self.writer.EndPolicyGroup
 | 
| +    # Assert generated string elements.
 | 
| +    output = self.GetXMLOfChildren(self.writer._string_table_elem)
 | 
| +    expected_output = (
 | 
| +        '<string id="SUPPORTED_TESTOS">\n'
 | 
| +        '  Supported on Test OS or higher\n'
 | 
| +        '</string>\n'
 | 
| +        '<string id="PolicyGroup_group">\n'
 | 
| +        '  Test Group Caption\n'
 | 
| +        '</string>')
 | 
| +    self.AssertXMLEquals(output, expected_output)
 | 
| +    # Assert generated presentation elements.
 | 
| +    output = self.GetXMLOfChildren(self.writer._presentation_table_elem)
 | 
| +    expected_output = ''
 | 
| +    self.AssertXMLEquals(output, expected_output)
 | 
| +
 | 
| +  def testMainPolicy(self):
 | 
| +    main_policy = {
 | 
| +      'name': 'DummyMainPolicy',
 | 
| +      'type': 'main',
 | 
| +      'caption': 'Main policy caption',
 | 
| +      'desc': 'Main policy test description.'
 | 
| +    }
 | 
| +    self. _InitWriterForAddingPolicies(self.writer, main_policy)
 | 
| +    self.writer.WritePolicy(main_policy)
 | 
| +    # Assert generated string elements.
 | 
| +    output = self.GetXMLOfChildren(self.writer._string_table_elem)
 | 
| +    expected_output = (
 | 
| +        '<string id="DummyMainPolicy">\n'
 | 
| +        '  Main policy caption\n'
 | 
| +        '</string>\n'
 | 
| +        '<string id="DummyMainPolicy_Explain">\n'
 | 
| +        '  Main policy test description.\n'
 | 
| +        '</string>')
 | 
| +    self.AssertXMLEquals(output, expected_output)
 | 
| +    # Assert generated presentation elements.
 | 
| +    output = self.GetXMLOfChildren(self.writer._presentation_table_elem)
 | 
| +    expected_output = '<presentation id="DummyMainPolicy"/>'
 | 
| +    self.AssertXMLEquals(output, expected_output)
 | 
| +
 | 
| +  def testStringPolicy(self):
 | 
| +    string_policy = {
 | 
| +      'name': 'StringPolicyStub',
 | 
| +      'type': 'string',
 | 
| +      'caption': 'String policy caption',
 | 
| +      'label': 'String policy label',
 | 
| +      'desc': 'This is a test description.',
 | 
| +    }
 | 
| +    self. _InitWriterForAddingPolicies(self.writer, string_policy)
 | 
| +    self.writer.WritePolicy(string_policy)
 | 
| +    # Assert generated string elements.
 | 
| +    output = self.GetXMLOfChildren(self.writer._string_table_elem)
 | 
| +    expected_output = (
 | 
| +        '<string id="StringPolicyStub">\n'
 | 
| +        '  String policy caption\n'
 | 
| +        '</string>\n'
 | 
| +        '<string id="StringPolicyStub_Explain">\n'
 | 
| +        '  This is a test description.\n'
 | 
| +        '</string>')
 | 
| +    self.AssertXMLEquals(output, expected_output)
 | 
| +    # Assert generated presentation elements.
 | 
| +    output = self.GetXMLOfChildren(self.writer._presentation_table_elem)
 | 
| +    expected_output = (
 | 
| +        '<presentation id="StringPolicyStub">\n'
 | 
| +        '  <textBox refId="StringPolicyStub">\n'
 | 
| +        '    <label>\n'
 | 
| +        '      String policy label\n'
 | 
| +        '    </label>\n'
 | 
| +        '  </textBox>\n'
 | 
| +        '</presentation>')
 | 
| +    self.AssertXMLEquals(output, expected_output)
 | 
| +
 | 
| +  def testIntPolicy(self):
 | 
| +    int_policy = {
 | 
| +      'name': 'IntPolicyStub',
 | 
| +      'type': 'int',
 | 
| +      'caption': 'Int policy caption',
 | 
| +      'label': 'Int policy label',
 | 
| +      'desc': 'This is a test description.',
 | 
| +    }
 | 
| +    self. _InitWriterForAddingPolicies(self.writer, int_policy)
 | 
| +    self.writer.WritePolicy(int_policy)
 | 
| +    # Assert generated string elements.
 | 
| +    output = self.GetXMLOfChildren(self.writer._string_table_elem)
 | 
| +    expected_output = (
 | 
| +        '<string id="IntPolicyStub">\n'
 | 
| +        '  Int policy caption\n'
 | 
| +        '</string>\n'
 | 
| +        '<string id="IntPolicyStub_Explain">\n'
 | 
| +        '  This is a test description.\n'
 | 
| +        '</string>')
 | 
| +    self.AssertXMLEquals(output, expected_output)
 | 
| +    # Assert generated presentation elements.
 | 
| +    output = self.GetXMLOfChildren(self.writer._presentation_table_elem)
 | 
| +    expected_output = (
 | 
| +        '<presentation id="IntPolicyStub">\n'
 | 
| +        '  <decimalTextBox refId="IntPolicyStub">\n'
 | 
| +        '    Int policy label:\n'
 | 
| +        '  </decimalTextBox>\n'
 | 
| +        '</presentation>')
 | 
| +    self.AssertXMLEquals(output, expected_output)
 | 
| +
 | 
| +  def testIntEnumPolicy(self):
 | 
| +    enum_policy = {
 | 
| +      'name': 'EnumPolicyStub',
 | 
| +      'type': 'int-enum',
 | 
| +      'caption': 'Enum policy caption',
 | 
| +      'label': 'Enum policy label',
 | 
| +      'desc': 'This is a test description.',
 | 
| +      'items': [
 | 
| +          {
 | 
| +           'name': 'item 1',
 | 
| +           'value': 1,
 | 
| +           'caption': 'Caption Item 1',
 | 
| +          },
 | 
| +          {
 | 
| +           'name': 'item 2',
 | 
| +           'value': 2,
 | 
| +           'caption': 'Caption Item 2',
 | 
| +          },
 | 
| +      ],
 | 
| +    }
 | 
| +    self. _InitWriterForAddingPolicies(self.writer, enum_policy)
 | 
| +    self.writer.WritePolicy(enum_policy)
 | 
| +    # Assert generated string elements.
 | 
| +    output = self.GetXMLOfChildren(self.writer._string_table_elem)
 | 
| +    expected_output = (
 | 
| +        '<string id="EnumPolicyStub">\n'
 | 
| +        '  Enum policy caption\n'
 | 
| +        '</string>\n'
 | 
| +        '<string id="EnumPolicyStub_Explain">\n'
 | 
| +        '  This is a test description.\n'
 | 
| +        '</string>\n'
 | 
| +        '<string id="item 1">\n'
 | 
| +        '  Caption Item 1\n'
 | 
| +        '</string>\n'
 | 
| +        '<string id="item 2">\n'
 | 
| +        '  Caption Item 2\n'
 | 
| +        '</string>')
 | 
| +    self.AssertXMLEquals(output, expected_output)
 | 
| +    # Assert generated presentation elements.
 | 
| +    output = self.GetXMLOfChildren(self.writer._presentation_table_elem)
 | 
| +    expected_output = (
 | 
| +        '<presentation id="EnumPolicyStub">\n'
 | 
| +        '  <dropdownList refId="EnumPolicyStub">\n'
 | 
| +        '    Enum policy label\n'
 | 
| +        '  </dropdownList>\n'
 | 
| +        '</presentation>')
 | 
| +    self.AssertXMLEquals(output, expected_output)
 | 
| +
 | 
| +  def testStringEnumPolicy(self):
 | 
| +    enum_policy = {
 | 
| +      'name': 'EnumPolicyStub',
 | 
| +      'type': 'string-enum',
 | 
| +      'caption': 'Enum policy caption',
 | 
| +      'label': 'Enum policy label',
 | 
| +      'desc': 'This is a test description.',
 | 
| +      'items': [
 | 
| +          {
 | 
| +           'name': 'item 1',
 | 
| +           'value': 'value 1',
 | 
| +           'caption': 'Caption Item 1',
 | 
| +          },
 | 
| +          {
 | 
| +           'name': 'item 2',
 | 
| +           'value': 'value 2',
 | 
| +           'caption': 'Caption Item 2',
 | 
| +          },
 | 
| +      ],
 | 
| +    }
 | 
| +    self. _InitWriterForAddingPolicies(self.writer, enum_policy)
 | 
| +    self.writer.WritePolicy(enum_policy)
 | 
| +    # Assert generated string elements.
 | 
| +    output = self.GetXMLOfChildren(self.writer._string_table_elem)
 | 
| +    expected_output = (
 | 
| +        '<string id="EnumPolicyStub">\n'
 | 
| +        '  Enum policy caption\n'
 | 
| +        '</string>\n'
 | 
| +        '<string id="EnumPolicyStub_Explain">\n'
 | 
| +        '  This is a test description.\n'
 | 
| +        '</string>\n'
 | 
| +        '<string id="item 1">\n'
 | 
| +        '  Caption Item 1\n'
 | 
| +        '</string>\n'
 | 
| +        '<string id="item 2">\n'
 | 
| +        '  Caption Item 2\n'
 | 
| +        '</string>')
 | 
| +    self.AssertXMLEquals(output, expected_output)
 | 
| +    # Assert generated presentation elements.
 | 
| +    output = self.GetXMLOfChildren(self.writer._presentation_table_elem)
 | 
| +    expected_output = (
 | 
| +        '<presentation id="EnumPolicyStub">\n'
 | 
| +        '  <dropdownList refId="EnumPolicyStub">\n'
 | 
| +        '    Enum policy label\n'
 | 
| +        '  </dropdownList>\n'
 | 
| +        '</presentation>')
 | 
| +    self.AssertXMLEquals(output, expected_output)
 | 
| +
 | 
| +  def testListPolicy(self):
 | 
| +    list_policy = {
 | 
| +      'name': 'ListPolicyStub',
 | 
| +      'type': 'list',
 | 
| +      'caption': 'List policy caption',
 | 
| +      'label': 'List policy label',
 | 
| +      'desc': 'This is a test description.',
 | 
| +    }
 | 
| +    self. _InitWriterForAddingPolicies(self.writer, list_policy)
 | 
| +    self.writer.WritePolicy(list_policy)
 | 
| +    # Assert generated string elements.
 | 
| +    output = self.GetXMLOfChildren(self.writer._string_table_elem)
 | 
| +    expected_output = (
 | 
| +        '<string id="ListPolicyStub">\n'
 | 
| +        '  List policy caption\n'
 | 
| +        '</string>\n'
 | 
| +        '<string id="ListPolicyStub_Explain">\n'
 | 
| +        '  This is a test description.\n'
 | 
| +        '</string>\n'
 | 
| +        '<string id="ListPolicyStubDesc">\n'
 | 
| +        '  List policy caption\n'
 | 
| +        '</string>')
 | 
| +    self.AssertXMLEquals(output, expected_output)
 | 
| +    # Assert generated presentation elements.
 | 
| +    output = self.GetXMLOfChildren(self.writer._presentation_table_elem)
 | 
| +    expected_output = (
 | 
| +        '<presentation id="ListPolicyStub">\n'
 | 
| +        '  <listBox refId="ListPolicyStubDesc">\n'
 | 
| +        '    List policy label\n'
 | 
| +        '  </listBox>\n'
 | 
| +        '</presentation>')
 | 
| +    self.AssertXMLEquals(output, expected_output)
 | 
| +
 | 
| +  def testPlatform(self):
 | 
| +    # Test that the writer correctly chooses policies of platform Windows.
 | 
| +    self.assertTrue(self.writer.IsPolicySupported({
 | 
| +      'supported_on': [
 | 
| +        {'platforms': ['win', 'zzz']}, {'platforms': ['aaa']}
 | 
| +      ]
 | 
| +    }))
 | 
| +    self.assertFalse(self.writer.IsPolicySupported({
 | 
| +      'supported_on': [
 | 
| +        {'platforms': ['mac', 'linux']}, {'platforms': ['aaa']}
 | 
| +      ]
 | 
| +    }))
 | 
| +
 | 
| +
 | 
| +if __name__ == '__main__':
 | 
| +  unittest.main()
 | 
| 
 | 
| Property changes on: grit/format/policy_templates/writers/adml_writer_unittest.py
 | 
| ___________________________________________________________________
 | 
| Added: svn:eol-style
 | 
|    + LF
 | 
| 
 | 
| 
 |