提交 5ac53638 编写于 作者: D Dong Li 提交者: Jiangtao Hu

added indexed queue test

上级 06d5f4b3
......@@ -11,6 +11,7 @@ cc_library(
cc_test(
name = "indexed_list_test",
size = "small",
srcs = [
"indexed_list_test.cc",
],
......@@ -28,6 +29,19 @@ cc_library(
],
)
cc_test(
name = "indexed_queue_test",
size = "small",
srcs = [
"indexed_queue_test.cc",
],
deps = [
":indexed_queue",
"//modules/common/util",
"@gtest//:main",
],
)
cc_library(
name = "obstacle",
srcs = [
......
......@@ -22,11 +22,8 @@
#include <unordered_map>
#include <vector>
#include "gmock/gmock.h"
#include "gtest/gtest.h"
#include "modules/common/proto/pnc_point.pb.h"
#include "modules/common/util/util.h"
#include "modules/planning/common/indexed_list.h"
......
......@@ -53,11 +53,11 @@ class IndexedQueue {
return false;
}
if (!queue_.empty() && queue_.size() == max_queue_size_) {
const auto &front = queue_.top();
const auto &front = queue_.front();
map_.erase(front.first);
queue_.pop_front();
queue_.pop();
}
queue_.push_back(std::make_pair<I, ptr>(id, ptr.get()));
queue_.push(std::make_pair(id, ptr.get()));
map_[id] = std::move(ptr);
return true;
}
......
/******************************************************************************
* Copyright 2017 The Apollo Authors. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*****************************************************************************/
/**
* @file
**/
#include <memory>
#include <unordered_map>
#include <vector>
#include "gtest/gtest.h"
#include "modules/common/util/util.h"
#include "modules/planning/common/indexed_queue.h"
namespace apollo {
namespace planning {
using StringIndexedQueue = IndexedQueue<int, std::string>;
TEST(IndexedQueue, QueueSize1) {
StringIndexedQueue object(1);
ASSERT_TRUE(object.Add(1, common::util::make_unique<std::string>("one")));
ASSERT_TRUE(object.Find(1) != nullptr);
ASSERT_TRUE(object.Find(2) == nullptr);
ASSERT_FALSE(object.Add(1, common::util::make_unique<std::string>("one")));
ASSERT_EQ("one", *object.Latest());
ASSERT_TRUE(object.Add(2, common::util::make_unique<std::string>("two")));
ASSERT_TRUE(object.Find(1) == nullptr);
ASSERT_TRUE(object.Find(2) != nullptr);
ASSERT_EQ("two", *object.Latest());
}
TEST(IndexedQueue, QueueSize2) {
StringIndexedQueue object(2);
ASSERT_TRUE(object.Add(1, common::util::make_unique<std::string>("one")));
ASSERT_TRUE(object.Find(1) != nullptr);
ASSERT_TRUE(object.Find(2) == nullptr);
ASSERT_FALSE(object.Add(1, common::util::make_unique<std::string>("one")));
ASSERT_EQ("one", *object.Latest());
ASSERT_TRUE(object.Add(2, common::util::make_unique<std::string>("two")));
ASSERT_TRUE(object.Find(1) != nullptr);
ASSERT_TRUE(object.Find(2) != nullptr);
ASSERT_EQ("two", *object.Latest());
ASSERT_TRUE(object.Add(3, common::util::make_unique<std::string>("three")));
ASSERT_TRUE(object.Find(1) == nullptr);
ASSERT_TRUE(object.Find(2) != nullptr);
ASSERT_TRUE(object.Find(3) != nullptr);
ASSERT_TRUE(object.Find(4) == nullptr);
ASSERT_EQ("three", *object.Latest());
}
} // namespace planning
} // namespace apollo
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册