|  | // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file | 
|  | // for details. All rights reserved. Use of this source code is governed by a | 
|  | // BSD-style license that can be found in the LICENSE file. | 
|  |  | 
|  | #include "vm/flags.h" | 
|  | #include "platform/assert.h" | 
|  | #include "vm/heap/heap.h" | 
|  | #include "vm/unit_test.h" | 
|  |  | 
|  | namespace dart { | 
|  |  | 
|  | DEFINE_FLAG(bool, basic_flag, true, "Testing of a basic boolean flag."); | 
|  |  | 
|  | DECLARE_FLAG(bool, print_flags); | 
|  |  | 
|  | VM_UNIT_TEST_CASE(BasicFlags) { | 
|  | EXPECT_EQ(true, FLAG_basic_flag); | 
|  | EXPECT_EQ(false, FLAG_verbose_gc); | 
|  | EXPECT_EQ(false, FLAG_print_flags); | 
|  | } | 
|  |  | 
|  | DEFINE_FLAG(bool, parse_flag_bool_test, true, "Flags::Parse (bool) testing"); | 
|  | DEFINE_FLAG(charp, string_opt_test, nullptr, "Testing: string option."); | 
|  | DEFINE_FLAG(charp, entrypoint_test, "main", "Testing: entrypoint"); | 
|  | DEFINE_FLAG(int, counter, 100, "Testing: int flag"); | 
|  |  | 
|  | VM_UNIT_TEST_CASE(ParseFlags) { | 
|  | EXPECT_EQ(true, FLAG_parse_flag_bool_test); | 
|  | Flags::Parse("no_parse_flag_bool_test"); | 
|  | EXPECT_EQ(false, FLAG_parse_flag_bool_test); | 
|  | Flags::Parse("parse_flag_bool_test"); | 
|  | EXPECT_EQ(true, FLAG_parse_flag_bool_test); | 
|  | Flags::Parse("parse_flag_bool_test=false"); | 
|  | EXPECT_EQ(false, FLAG_parse_flag_bool_test); | 
|  | Flags::Parse("parse_flag_bool_test=true"); | 
|  | EXPECT_EQ(true, FLAG_parse_flag_bool_test); | 
|  |  | 
|  | EXPECT_EQ(true, FLAG_string_opt_test == nullptr); | 
|  | Flags::Parse("string_opt_test=doobidoo"); | 
|  | EXPECT_EQ(true, FLAG_string_opt_test != nullptr); | 
|  | EXPECT_EQ(0, strcmp(FLAG_string_opt_test, "doobidoo")); | 
|  | FLAG_string_opt_test = reinterpret_cast<charp>(0xDEADBEEF); | 
|  | Flags::Parse("string_opt_test=foofoo"); | 
|  | EXPECT_EQ(true, FLAG_string_opt_test != nullptr); | 
|  | EXPECT_EQ(0, strcmp(FLAG_string_opt_test, "foofoo")); | 
|  |  | 
|  | EXPECT_EQ(true, FLAG_entrypoint_test != nullptr); | 
|  | EXPECT_EQ(0, strcmp(FLAG_entrypoint_test, "main")); | 
|  |  | 
|  | EXPECT_EQ(100, FLAG_counter); | 
|  | Flags::Parse("counter=-300"); | 
|  | EXPECT_EQ(-300, FLAG_counter); | 
|  | Flags::Parse("counter=$300"); | 
|  | EXPECT_EQ(-300, FLAG_counter); | 
|  | } | 
|  |  | 
|  | }  // namespace dart |