# Copyright 2015 Google Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

{
  'variables': {
    'cobalt_code': 1,
  },
  'targets': [
    {
      'target_name': 'cssom_test',
      'type': '<(gtest_target_type)',
      'sources': [
        'cascade_precedence_test.cc',
        'cascaded_style_test.cc',
        'computed_style_test.cc',
        'css_computed_style_data_property_set_matcher_test.cc',
        'css_computed_style_data_test.cc',
        'css_computed_style_declaration_test.cc',
        'css_declared_style_data_test.cc',
        'css_declared_style_declaration_test.cc',
        'css_font_face_declaration_data_test.cc',
        'css_font_face_rule_test.cc',
        'css_grouping_rule_test.cc',
        'css_property_definitions_test.cc',
        'css_rule_list_test.cc',
        'css_rule_visitor_test.cc',
        'css_style_sheet_test.cc',
        'css_transition_set_test.cc',
        'interpolate_property_value_test.cc',
        'keyword_value_test.cc',
        'media_feature_test.cc',
        'media_list_test.cc',
        'media_query_test.cc',
        'property_value_is_equal_test.cc',
        'property_value_to_string_test.cc',
        'property_value_visitor_test.cc',
        'selector_test.cc',
        'selector_tree_test.cc',
        'selector_visitor_test.cc',
        'specificity_test.cc',
        'style_sheet_list_test.cc',
        'timing_function_test.cc',
        'transform_function_visitor_test.cc',
      ],
      'dependencies': [
        '<(DEPTH)/base/base.gyp:run_all_unittests',
        '<(DEPTH)/cobalt/css_parser/css_parser.gyp:css_parser',
        '<(DEPTH)/cobalt/cssom/cssom.gyp:cssom',
        '<(DEPTH)/testing/gmock.gyp:gmock',
        '<(DEPTH)/testing/gtest.gyp:gtest',
      ],
    },

    {
      'target_name': 'cssom_test_deploy',
      'type': 'none',
      'dependencies': [
        'cssom_test',
      ],
      'variables': {
        'executable_name': 'cssom_test',
      },
      'includes': [ '../../starboard/build/deploy.gypi' ],
    },
  ],
}
