1 //******************************************************************
3 // Copyright 2015 Intel Mobile Communications GmbH All Rights Reserved.
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
11 // http://www.apache.org/licenses/LICENSE-2.0
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
22 #include <gtest/gtest.h>
23 #include <OCException.h>
24 #include <StringConstants.h>
30 namespace OCExceptionTests
34 OCStackResult resultCodes[] =
37 OC_STACK_RESOURCE_CREATED,
38 OC_STACK_RESOURCE_DELETED,
40 OC_STACK_RESOURCE_CHANGED,
42 OC_STACK_INVALID_QUERY,
44 OC_STACK_INVALID_PORT,
45 OC_STACK_INVALID_CALLBACK,
46 OC_STACK_INVALID_METHOD,
47 OC_STACK_INVALID_PARAM,
48 OC_STACK_INVALID_OBSERVE_PARAM,
52 OC_STACK_ADAPTER_NOT_ENABLED,
55 OC_STACK_RESOURCE_ERROR,
56 OC_STACK_SLOW_RESOURCE,
57 OC_STACK_DUPLICATE_REQUEST,
58 OC_STACK_NO_OBSERVERS,
59 OC_STACK_OBSERVER_NOT_FOUND,
60 OC_STACK_VIRTUAL_DO_NOT_HANDLE,
61 OC_STACK_INVALID_OPTION,
62 OC_STACK_MALFORMED_RESPONSE,
63 OC_STACK_PERSISTENT_BUFFER_REQUIRED,
64 OC_STACK_INVALID_REQUEST_HANDLE,
65 OC_STACK_INVALID_DEVICE_INFO,
66 OC_STACK_INVALID_JSON,
67 OC_STACK_UNAUTHORIZED_REQ,
68 OC_STACK_TOO_LARGE_REQ,
69 OC_STACK_PDM_IS_NOT_INITIALIZED,
70 OC_STACK_DUPLICATE_UUID,
71 OC_STACK_INCONSISTENT_DB,
72 OC_STACK_SVR_DB_NOT_EXIST,
73 OC_STACK_AUTHENTICATION_FAILURE,
74 OC_STACK_NOT_ALLOWED_OXM,
75 OC_STACK_PRESENCE_STOPPED,
76 OC_STACK_PRESENCE_TIMEOUT,
77 OC_STACK_PRESENCE_DO_NOT_HANDLE,
78 OC_STACK_USER_DENIED_REQ,
79 OC_STACK_NOT_ACCEPTABLE,
80 OC_STACK_METHOD_NOT_ALLOWED,
81 OC_STACK_FORBIDDEN_REQ,
82 OC_STACK_INTERNAL_SERVER_ERROR,
83 OC_STACK_NOT_IMPLEMENTED,
85 OC_STACK_SERVICE_UNAVAILABLE,
86 OC_STACK_GATEWAY_TIMEOUT,
87 OC_STACK_PROXY_NOT_SUPPORTED,
91 std::string resultMessages[]=
93 OC::Exception::NO_ERROR,
94 OC::Exception::RESOURCE_CREATED,
95 OC::Exception::RESOURCE_DELETED,
96 OC::Exception::STACK_CONTINUE,
97 OC::Exception::RESOURCE_CHANGED,
98 OC::Exception::INVALID_URI,
99 OC::Exception::INVALID_QUERY,
100 OC::Exception::INVALID_IP,
101 OC::Exception::INVALID_PORT,
102 OC::Exception::INVALID_CB,
103 OC::Exception::INVALID_METHOD,
104 OC::Exception::INVALID_PARAM,
105 OC::Exception::INVALID_OBESERVE,
106 OC::Exception::NO_MEMORY,
107 OC::Exception::COMM_ERROR,
108 OC::Exception::TIMEOUT,
109 OC::Exception::ADAPTER_NOT_ENABLED,
110 OC::Exception::NOT_IMPL,
111 OC::Exception::NOT_FOUND,
112 OC::Exception::RESOURCE_ERROR,
113 OC::Exception::SLOW_RESOURCE,
114 OC::Exception::DUPLICATE_REQUEST,
115 OC::Exception::NO_OBSERVERS,
116 OC::Exception::OBSV_NO_FOUND,
117 OC::Exception::VIRTUAL_DO_NOT_HANDLE,
118 OC::Exception::INVALID_OPTION,
119 OC::Exception::MALFORMED_STACK_RESPONSE,
120 OC::Exception::PERSISTENT_BUFFER_REQUIRED,
121 OC::Exception::INVALID_REQUEST_HANDLE,
122 OC::Exception::INVALID_DEVICE_INFO,
123 OC::Exception::INVALID_REPRESENTATION,
124 OC::Exception::UNAUTHORIZED_REQUEST,
125 OC::Exception::TOO_LARGE_REQ,
126 OC::Exception::PDM_DB_NOT_INITIALIZED,
127 OC::Exception::DUPLICATE_UUID,
128 OC::Exception::INCONSISTENT_DB,
129 OC::Exception::SVR_DB_NOT_EXIST,
130 OC::Exception::AUTHENTICATION_FAILURE,
131 OC::Exception::NOT_ALLOWED_OXM,
132 OC::Exception::PRESENCE_STOPPED,
133 OC::Exception::PRESENCE_TIMEOUT,
134 OC::Exception::PRESENCE_NOT_HANDLED,
135 OC::Exception::USER_DENIED_REQ,
136 OC::Exception::NOT_ACCEPTABLE,
137 OC::Exception::METHOD_NOT_ALLOWED,
138 OC::Exception::FORBIDDEN_REQ,
139 OC::Exception::INTERNAL_SERVER_ERROR,
140 OC::Exception::NOT_IMPLEMENTED,
141 OC::Exception::BAD_GATEWAY,
142 OC::Exception::SERVICE_UNAVAILABLE,
143 OC::Exception::GATEWAY_TIMEOUT,
144 OC::Exception::PROXY_NOT_SUPPORTED,
145 OC::Exception::GENERAL_FAULT
147 TEST(OCExceptionTest, ReasonCodeMatches)
149 for(OCStackResult res : resultCodes)
151 OCException ex{"", res};
152 EXPECT_EQ(res, ex.code());
156 TEST(OCExceptionTest, MessageCodeMatches)
158 std::string exceptionMessage = "This is the exception message!";
159 OCException ex {exceptionMessage, OC_STACK_OK};
161 EXPECT_EQ(exceptionMessage, ex.what());
164 TEST(OCExceptionTest, ReasonMapping)
167 for(OCStackResult res : resultCodes)
169 OCException ex{"", res};
170 EXPECT_EQ(resultMessages[i], ex.reason());
175 TEST(OCExceptionTest, UnknownReasonMappings)
177 for(int i = 0; i < OC_STACK_ERROR; ++i)
180 std::begin(resultCodes),
181 std::end(resultCodes),
182 static_cast<OCStackResult>(i))
183 == std::end(resultCodes))
185 OCException ex {"", static_cast<OCStackResult>(i)};
186 EXPECT_EQ(OC::Exception::UNKNOWN_ERROR, ex.reason());
190 } //namespace OCExceptionTests