libuav original
Dependents: UAVCAN UAVCAN_Subscriber
transfer.cpp
00001 /* 00002 * Copyright (C) 2014 Pavel Kirienko <pavel.kirienko@gmail.com> 00003 */ 00004 00005 #include <string> 00006 #include <gtest/gtest.h> 00007 #include <uavcan/transport/transfer.hpp> 00008 00009 00010 TEST(Transfer, TransferID) 00011 { 00012 using uavcan::TransferID; 00013 00014 // Tests below are based on this assumption 00015 ASSERT_EQ(32, 1 << TransferID::BitLen); 00016 00017 /* 00018 * forwardDistance() 00019 */ 00020 EXPECT_EQ(0, TransferID(0).computeForwardDistance(0)); 00021 EXPECT_EQ(1, TransferID(0).computeForwardDistance(1)); 00022 EXPECT_EQ(7, TransferID(0).computeForwardDistance(7)); 00023 00024 EXPECT_EQ(0, TransferID(7).computeForwardDistance(7)); 00025 EXPECT_EQ(31,TransferID(31).computeForwardDistance(30)); 00026 EXPECT_EQ(1, TransferID(31).computeForwardDistance(0)); 00027 00028 EXPECT_EQ(30,TransferID(7).computeForwardDistance(5)); 00029 EXPECT_EQ(5, TransferID(0).computeForwardDistance(5)); 00030 00031 /* 00032 * Misc 00033 */ 00034 EXPECT_TRUE(TransferID(2) == TransferID(2)); 00035 EXPECT_FALSE(TransferID(2) != TransferID(2)); 00036 EXPECT_FALSE(TransferID(2) == TransferID(0)); 00037 EXPECT_TRUE(TransferID(2) != TransferID(0)); 00038 00039 TransferID tid; 00040 for (int i = 0; i < 999; i++) 00041 { 00042 ASSERT_EQ(i & ((1 << TransferID::BitLen) - 1), tid.get()); 00043 const TransferID copy = tid; 00044 tid.increment(); 00045 ASSERT_EQ(1, copy.computeForwardDistance(tid)); 00046 ASSERT_EQ(31, tid.computeForwardDistance(copy)); 00047 ASSERT_EQ(0, tid.computeForwardDistance(tid)); 00048 } 00049 } 00050 00051 00052 TEST(Transfer, NodeID) 00053 { 00054 uavcan::NodeID nid1(1); 00055 uavcan::NodeID nid127(127); 00056 uavcan::NodeID nid0(0); 00057 uavcan::NodeID nidx; 00058 00059 ASSERT_TRUE(nid1.isUnicast()); 00060 ASSERT_FALSE(nid1.isBroadcast()); 00061 ASSERT_TRUE(nid1.isValid()); 00062 00063 ASSERT_TRUE(nid127.isUnicast()); 00064 ASSERT_FALSE(nid127.isBroadcast()); 00065 ASSERT_TRUE(nid127.isValid()); 00066 00067 ASSERT_FALSE(nid0.isUnicast()); 00068 ASSERT_TRUE(nid0.isBroadcast()); 00069 ASSERT_TRUE(nid0.isValid()); 00070 00071 ASSERT_FALSE(nidx.isUnicast()); 00072 ASSERT_FALSE(nidx.isBroadcast()); 00073 ASSERT_FALSE(nidx.isValid()); 00074 00075 /* 00076 * Comparison operators 00077 */ 00078 ASSERT_TRUE(nid1 < nid127); 00079 ASSERT_TRUE(nid1 <= nid127); 00080 ASSERT_TRUE(nid0 < nid1); 00081 ASSERT_TRUE(nid0 <= nid1); 00082 00083 ASSERT_FALSE(nid1 > nid127); 00084 ASSERT_FALSE(nid1 >= nid127); 00085 ASSERT_FALSE(nid0 > nid1); 00086 ASSERT_FALSE(nid0 >= nid1); 00087 00088 ASSERT_FALSE(nid1 > uavcan::NodeID(1)); 00089 ASSERT_TRUE(nid1 >= uavcan::NodeID(1)); 00090 00091 ASSERT_FALSE(nid1 == nid127); 00092 ASSERT_TRUE(nid127 == uavcan::NodeID(127)); 00093 }
Generated on Tue Jul 12 2022 17:17:35 by 1.7.2