# Copyright 2014 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.

"""Checks that properties get to recipes from annotated_run properly"""

from recipe_engine.recipe_api import Property

DEPS = [
    'recipe_engine/step',
    'recipe_engine/properties',
]

PROPERTIES = {
  'true_prop': Property(),
  'num_prop': Property(),
  'string_prop': Property(),
  'dict_prop': Property(),
}

def RunSteps(api, true_prop, num_prop, string_prop, dict_prop):
  assert true_prop == True
  assert num_prop == 123
  assert string_prop == '321'
  assert dict_prop == {'foo': 'bar'}

def GenTests(api):
  yield api.test('basic') + api.properties(
    true_prop=True,
    num_prop=123,
    string_prop='321',
    dict_prop={'foo': 'bar'})

  yield (api.test('type_error') + api.properties(
      true_prop=True,
      num_prop=123,
      string_prop=321,
      dict_prop={'foo': 'bar'}) +
    api.expect_exception('AssertionError'))
