From 7528b6b8bf3c4bf0cef36fdbcc882a4a8fe82d90 Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Sat, 19 Dec 2015 08:46:15 -0800 Subject: [PATCH] Fix NetworkTable::ContainsKey. Previously this would always return false due to how explicit bool is evaluated in a return context. Also add a test for this function. Reported by: jcreigh --- src/networktables/NetworkTable.cpp | 2 +- test/unit/NetworkTableTest.cpp | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 test/unit/NetworkTableTest.cpp diff --git a/src/networktables/NetworkTable.cpp b/src/networktables/NetworkTable.cpp index 4a707c52b9..13440d16a5 100644 --- a/src/networktables/NetworkTable.cpp +++ b/src/networktables/NetworkTable.cpp @@ -207,7 +207,7 @@ bool NetworkTable::ContainsKey(StringRef key) const { llvm::SmallString<128> path(m_path); path += PATH_SEPARATOR_CHAR; path += key; - return !nt::GetEntryValue(path); + return nt::GetEntryValue(path) ? true : false; } bool NetworkTable::ContainsSubTable(StringRef key) const { diff --git a/test/unit/NetworkTableTest.cpp b/test/unit/NetworkTableTest.cpp new file mode 100644 index 0000000000..084c658ca5 --- /dev/null +++ b/test/unit/NetworkTableTest.cpp @@ -0,0 +1,20 @@ +/*----------------------------------------------------------------------------*/ +/* Copyright (c) FIRST 2015. All Rights Reserved. */ +/* Open Source Software - may be modified and shared by FRC teams. The code */ +/* must be accompanied by the FIRST BSD license file in the root directory of */ +/* the project. */ +/*----------------------------------------------------------------------------*/ + +#include "networktables/NetworkTable.h" + +#include "gtest/gtest.h" + +class NetworkTableTest : public ::testing::Test {}; + +TEST_F(NetworkTableTest, ContainsKey) { + auto nt = NetworkTable::GetTable("containskey"); + ASSERT_FALSE(nt->ContainsKey("testkey")); + nt->PutNumber("testkey", 5); + ASSERT_TRUE(nt->ContainsKey("testkey")); +} +