tizen beta release
[framework/web/wrt-commons.git] / tests / core / test_scoped_fclose.cpp
1 /*
2  * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  *    Licensed under the Apache License, Version 2.0 (the "License");
5  *    you may not use this file except in compliance with the License.
6  *    You may obtain a copy of the License at
7  *
8  *        http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *    Unless required by applicable law or agreed to in writing, software
11  *    distributed under the License is distributed on an "AS IS" BASIS,
12  *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *    See the License for the specific language governing permissions and
14  *    limitations under the License.
15  */
16 /*!
17  * @file        test_scoped_fclose.cpp
18  * @author      Piotr Marcinkiewicz (p.marcinkiew@samsung.com)
19  * @version     1.0
20  * @brief       This file is the implementation file of test scoped fclose
21  */
22
23 #include <cstdio>
24 #include <cerrno>
25
26 #include <dpl/test/test_runner.h>
27 #include <dpl/scoped_fclose.h>
28
29 RUNNER_TEST_GROUP_INIT(DPL)
30
31 namespace
32 {
33 FILE* MakeTmp()
34 {
35     FILE* result = NULL;
36     do
37     {
38         result = tmpfile();
39     } while (NULL != result && EINTR == errno);
40     return result;
41 }
42 }//anonymous namespace
43
44 RUNNER_TEST(ScopedFClose_Zero)
45 {
46     DPL::ScopedFClose file;
47
48     RUNNER_ASSERT(!file);
49     RUNNER_ASSERT(!!!file);
50 }
51
52 RUNNER_TEST(ScopedFClose_NonZero)
53 {
54     DPL::ScopedFClose file(MakeTmp());
55
56     RUNNER_ASSERT(file);
57     RUNNER_ASSERT(!!file);
58 }
59
60 RUNNER_TEST(ScopedFClose_Reset)
61 {
62     DPL::ScopedFClose file(MakeTmp());
63     file.Reset();
64
65     RUNNER_ASSERT(!file);
66
67     file.Reset(MakeTmp());
68     RUNNER_ASSERT(file);
69 }
70