takashi kadono / Mbed OS Nucleo_446

Dependencies:   ssd1331

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Test_LoRaMacChannelPlan.cpp Source File

Test_LoRaMacChannelPlan.cpp

00001 /*
00002  * Copyright (c) 2018, Arm Limited and affiliates
00003  * SPDX-License-Identifier: Apache-2.0
00004  *
00005  * Licensed under the Apache License, Version 2.0 (the "License");
00006  * you may not use this file except in compliance with the License.
00007  * You may obtain a copy of the License at
00008  *
00009  *     http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #include "gtest/gtest.h"
00019 #include "LoRaMacChannelPlan.h"
00020 #include "LoRaPHY_stub.h"
00021 #include "LoRaPHY.h"
00022 
00023 class my_LoRaPHY : public LoRaPHY
00024 {
00025 public:
00026     my_LoRaPHY(){};
00027 
00028     virtual ~my_LoRaPHY(){};
00029 };
00030 
00031 
00032 class Test_LoRaMacChannelPlan : public testing::Test {
00033 protected:
00034     LoRaMacChannelPlan *object;
00035     my_LoRaPHY phy;
00036 
00037     virtual void SetUp()
00038     {
00039         object = new LoRaMacChannelPlan();
00040         object->activate_channelplan_subsystem(&phy);
00041 
00042         LoRaPHY_stub::uint8_value = 0;
00043         LoRaPHY_stub::bool_counter = 0;
00044         LoRaPHY_stub::lorawan_status_value = LORAWAN_STATUS_OK;
00045         LoRaPHY_stub::uint16_value = 0;
00046         memcpy(LoRaPHY_stub::bool_table, "0", 20);
00047     }
00048 
00049     virtual void TearDown()
00050     {
00051         delete object;
00052     }
00053 };
00054 
00055 TEST_F(Test_LoRaMacChannelPlan, constructor)
00056 {
00057     EXPECT_TRUE(object);
00058 }
00059 
00060 TEST_F(Test_LoRaMacChannelPlan, set_plan)
00061 {
00062     lorawan_channelplan_t plan;
00063     LoRaPHY_stub::bool_counter = 0;
00064     LoRaPHY_stub::bool_table[0] = false;
00065     EXPECT_TRUE(object->set_plan(plan) == LORAWAN_STATUS_SERVICE_UNKNOWN);
00066 
00067     plan.nb_channels = 1;
00068     LoRaPHY_stub::bool_counter = 0;
00069     LoRaPHY_stub::bool_table[0] = true;
00070     LoRaPHY_stub::uint8_value = 0;
00071     EXPECT_TRUE(object->set_plan(plan) == LORAWAN_STATUS_PARAMETER_INVALID);
00072 
00073     LoRaPHY_stub::bool_counter = 0;
00074     LoRaPHY_stub::bool_table[0] = true;
00075     LoRaPHY_stub::uint8_value = 10;
00076     LoRaPHY_stub::lorawan_status_value = LORAWAN_STATUS_PARAMETER_INVALID;
00077     EXPECT_TRUE(object->set_plan(plan) == LORAWAN_STATUS_PARAMETER_INVALID);
00078 
00079     LoRaPHY_stub::bool_counter = 0;
00080     LoRaPHY_stub::bool_table[0] = true;
00081     plan.nb_channels = 2;
00082     LoRaPHY_stub::lorawan_status_value = LORAWAN_STATUS_OK;
00083     EXPECT_TRUE(object->set_plan(plan) == LORAWAN_STATUS_OK);
00084 }
00085 
00086 TEST_F(Test_LoRaMacChannelPlan, get_plan)
00087 {
00088     lorawan_channelplan_t plan;
00089     channel_params_t params;
00090     LoRaPHY_stub::bool_counter = 0;
00091     LoRaPHY_stub::bool_table[0] = false;
00092     EXPECT_TRUE(object->get_plan(plan, &params) == LORAWAN_STATUS_SERVICE_UNKNOWN);
00093 
00094     LoRaPHY_stub::bool_counter = 0;
00095     LoRaPHY_stub::bool_table[0] = true;
00096     LoRaPHY_stub::bool_table[1] = false;
00097 
00098     LoRaPHY_stub::uint8_value = 1;
00099     LoRaPHY_stub::uint16_value = 0xABCD;
00100     EXPECT_TRUE(object->get_plan(plan, &params) == LORAWAN_STATUS_OK);
00101 
00102     LoRaPHY_stub::bool_counter = 0;
00103     LoRaPHY_stub::bool_table[0] = true;
00104     LoRaPHY_stub::bool_table[1] = true;
00105     LoRaPHY_stub::bool_table[2] = false;
00106     loramac_channel_t ch;
00107     plan.channels = &ch;
00108     EXPECT_TRUE(object->get_plan(plan, &params) == LORAWAN_STATUS_OK);
00109 }
00110 
00111 TEST_F(Test_LoRaMacChannelPlan, remove_plan)
00112 {
00113     LoRaPHY_stub::bool_counter = 0;
00114     LoRaPHY_stub::bool_table[0] = false;
00115     EXPECT_TRUE(object->remove_plan() == LORAWAN_STATUS_SERVICE_UNKNOWN);
00116 
00117     LoRaPHY_stub::uint8_value = 4;
00118     LoRaPHY_stub::bool_counter = 0;
00119     LoRaPHY_stub::bool_table[0] = true;
00120     LoRaPHY_stub::bool_table[1] = true; //first continue
00121     LoRaPHY_stub::bool_table[2] = false;
00122     LoRaPHY_stub::bool_table[3] = false;//second continue
00123     LoRaPHY_stub::bool_table[4] = false;
00124     LoRaPHY_stub::bool_table[5] = true;
00125     LoRaPHY_stub::bool_table[6] = false;//false for remove_single_channel(i)
00126 
00127     EXPECT_TRUE(object->remove_plan() == LORAWAN_STATUS_SERVICE_UNKNOWN);
00128 
00129     LoRaPHY_stub::uint8_value = 3;
00130     LoRaPHY_stub::bool_counter = 0;
00131     LoRaPHY_stub::bool_table[0] = true;
00132     LoRaPHY_stub::bool_table[1] = false;
00133     LoRaPHY_stub::bool_table[2] = true;
00134     LoRaPHY_stub::bool_table[3] = true;
00135     LoRaPHY_stub::bool_table[4] = true;
00136     LoRaPHY_stub::bool_table[5] = true;
00137     LoRaPHY_stub::bool_table[7] = true;
00138     LoRaPHY_stub::bool_table[8] = true;
00139     LoRaPHY_stub::bool_table[9] = true;
00140     LoRaPHY_stub::bool_table[10] = true;
00141 
00142     EXPECT_TRUE(object->remove_plan() == LORAWAN_STATUS_OK);
00143 
00144 }
00145 
00146 TEST_F(Test_LoRaMacChannelPlan, remove_single_channel)
00147 {
00148     LoRaPHY_stub::bool_counter = 0;
00149     LoRaPHY_stub::bool_table[0] = false;
00150     EXPECT_TRUE(object->remove_single_channel(4) == LORAWAN_STATUS_SERVICE_UNKNOWN);
00151 
00152     LoRaPHY_stub::uint8_value = 2;
00153     LoRaPHY_stub::bool_counter = 0;
00154     LoRaPHY_stub::bool_table[0] = true;
00155 
00156     EXPECT_TRUE(object->remove_single_channel(4) == LORAWAN_STATUS_PARAMETER_INVALID);
00157 
00158     LoRaPHY_stub::bool_counter = 0;
00159     LoRaPHY_stub::bool_table[0] = true;
00160     LoRaPHY_stub::bool_table[1] = false;
00161     EXPECT_TRUE(object->remove_single_channel(1) == LORAWAN_STATUS_PARAMETER_INVALID);
00162 
00163     LoRaPHY_stub::bool_counter = 0;
00164     LoRaPHY_stub::bool_table[0] = true;
00165     LoRaPHY_stub::bool_table[1] = true;
00166     EXPECT_TRUE(object->remove_single_channel(1) == LORAWAN_STATUS_OK);
00167 }
00168