1/* -*- c++ -*- */
2/*
3 * Copyright (C) 2010 The Android Open Source Project
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 *  * Redistributions of source code must retain the above copyright
10 *    notice, this list of conditions and the following disclaimer.
11 *  * Redistributions in binary form must reproduce the above copyright
12 *    notice, this list of conditions and the following disclaimer in
13 *    the documentation and/or other materials provided with the
14 *    distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
19 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
20 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
22 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
23 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
25 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
26 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE.
28 */
29
30#include "../include/ios_base.h"
31#ifndef ANDROID_ASTL_IOS_BASE_H__
32#error "Wrong header included!!"
33#endif
34#include "common.h"
35
36namespace android {
37class ios: public std::ios_base {
38  public:
39};
40
41bool testDefaultPrecision() {
42    ios s;
43    EXPECT_TRUE(s.precision() == 6);
44    return true;
45}
46
47bool testSetPrecision() {
48    ios s;
49    EXPECT_TRUE(s.precision(10) == 6);
50    EXPECT_TRUE(s.precision() == 10);
51    EXPECT_TRUE(s.precision(-1) == 10); // no-op
52    EXPECT_TRUE(s.precision() == 10);
53    return true;
54}
55
56bool testDefaultWidth() {
57    ios s;
58    EXPECT_TRUE(s.width() == 0);
59    return true;
60}
61
62bool testSetWidth() {
63    ios s;
64    EXPECT_TRUE(s.width(10) == 0);
65    EXPECT_TRUE(s.width() == 10);
66    EXPECT_TRUE(s.width(-1) == 10); // no-op
67    EXPECT_TRUE(s.width() == 10);
68    return true;
69}
70
71bool testInit() {
72    {
73        std::ios_base::Init init;
74        EXPECT_TRUE(init.done());
75    }
76    {
77        std::ios_base::Init init1;
78        EXPECT_TRUE(init1.done());
79        std::ios_base::Init init2;
80        EXPECT_TRUE(init2.done());
81        std::ios_base::Init init3;
82        EXPECT_TRUE(init3.done());
83    }
84    return true;
85}
86
87}  // namespace android
88
89int main(int argc, char **argv){
90    FAIL_UNLESS(testDefaultPrecision);
91    FAIL_UNLESS(testSetPrecision);
92    FAIL_UNLESS(testDefaultWidth);
93    FAIL_UNLESS(testSetWidth);
94    FAIL_UNLESS(testInit);
95    return kPassed;
96}
97