product_database_test.c revision bdd62c531bbdea115a3a7e71bba91c19dd319cc4
19085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org/* 29085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org * Copyright 2008 Google Inc. 39085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org * 45ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org * Licensed under the Apache License, Version 2.0 (the "License"); 55ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org * you may not use this file except in compliance with the License. 65ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org * You may obtain a copy of the License at 75ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org * 89085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org * http://www.apache.org/licenses/LICENSE-2.0 99085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org * 109085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org * Unless required by applicable law or agreed to in writing, software 119085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org * distributed under the License is distributed on an "AS IS" BASIS, 129085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org * See the License for the specific language governing permissions and 149085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org * limitations under the License. 159085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org */ 169085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org#include <stdarg.h> 179085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org#include <stddef.h> 189085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org#include <setjmp.h> 199085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org#include <cmockery.h> 209085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org#include <database.h> 219085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org 229085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.orgextern DatabaseConnection* connect_to_product_database(); 239085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org 249085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org/* Mock connect to database function. 259085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org * NOTE: This mock function is very general could be shared between tests 269085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org * that use the imaginary database.h module. */ 279085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.orgDatabaseConnection* connect_to_database(const char * const url, 289085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org const unsigned int port) { 299085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org check_expected(url); 309085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org check_expected(port); 319085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org return (DatabaseConnection*)mock(); 329085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org} 3356454717593e7552d6846198b8e0f661fa36a3cayangguo@chromium.org 349085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.orgvoid test_connect_to_product_database(void **state) { 359085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org expect_string(connect_to_database, url, "products.abcd.org"); 369085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org expect_value(connect_to_database, port, 322); 379085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org will_return(connect_to_database, 0xDA7ABA53); 389085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org assert_int_equal((int)connect_to_product_database(), 0xDA7ABA53); 399085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org} 40196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org 41c4c927273ae2b690c4a015b4640a2a469c9a1a69ager@chromium.org/* This test will fail since the expected URL is different to the URL that is 4271affb54842da76b24f0bb3184e9f0960523f89dkasperl@chromium.org * passed to connect_to_database() by connect_to_product_database(). */ 4371affb54842da76b24f0bb3184e9f0960523f89dkasperl@chromium.orgvoid test_connect_to_product_database_bad_url(void **state) { 449085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org expect_string(connect_to_database, url, "products.abcd.com"); 45e2902be65446e26fd63a3b4eab2f14257cf4ebafager@chromium.org expect_value(connect_to_database, port, 322); 46e2902be65446e26fd63a3b4eab2f14257cf4ebafager@chromium.org will_return(connect_to_database, 0xDA7ABA53); 479085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org assert_int_equal((int)connect_to_product_database(), 0xDA7ABA53); 489085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org} 499085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org 509085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org/* This test will fail since the mock connect_to_database() will attempt to 519085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org * retrieve a value for the parameter port which isn't specified by this 529085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org * test function. */ 539085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.orgvoid test_connect_to_product_database_missing_parameter(void **state) { 549085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org expect_string(connect_to_database, url, "products.abcd.org"); 559085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org will_return(connect_to_database, 0xDA7ABA53); 569085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org assert_int_equal((int)connect_to_product_database(), 0xDA7ABA53); 579085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org} 589085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org 599085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.orgint main(int argc, char* argv[]) { 609085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org const UnitTest tests[] = { 619085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org unit_test(test_connect_to_product_database), 629085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org unit_test(test_connect_to_product_database_bad_url), 639085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org unit_test(test_connect_to_product_database_missing_parameter), 649085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org }; 659085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org return run_tests(tests); 669085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org} 679085a016223a6b72bf580d5781c93ec7b9e54422ager@chromium.org