| /** @file |
| |
| Unit tests for Parent Selection hash algorithm configuration |
| |
| @section license License |
| |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you 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. |
| */ |
| |
| #include "proxy/ParentSelection.h" |
| #include <catch2/catch_test_macros.hpp> |
| |
| // Helper function to test parseHashAlgorithm (normally static, exposed here for testing) |
| extern ParentHashAlgorithm parseHashAlgorithm(std::string_view name); |
| |
| TEST_CASE("parseHashAlgorithm - Valid inputs", "[ParentSelection]") |
| { |
| REQUIRE(parseHashAlgorithm("siphash24") == ParentHashAlgorithm::SIPHASH24); |
| REQUIRE(parseHashAlgorithm("siphash13") == ParentHashAlgorithm::SIPHASH13); |
| } |
| |
| TEST_CASE("parseHashAlgorithm - Invalid inputs fallback to default", "[ParentSelection]") |
| { |
| REQUIRE(parseHashAlgorithm("invalid") == ParentHashAlgorithm::SIPHASH24); |
| REQUIRE(parseHashAlgorithm("") == ParentHashAlgorithm::SIPHASH24); |
| REQUIRE(parseHashAlgorithm("SIPHASH24") == ParentHashAlgorithm::SIPHASH24); // case sensitive |
| REQUIRE(parseHashAlgorithm("xxh3") == ParentHashAlgorithm::SIPHASH24); // not yet implemented |
| REQUIRE(parseHashAlgorithm("md5") == ParentHashAlgorithm::SIPHASH24); |
| } |
| |
| TEST_CASE("parseHashAlgorithm - Case sensitivity", "[ParentSelection]") |
| { |
| // Should be case-sensitive - uppercase should fall back to default |
| REQUIRE(parseHashAlgorithm("SipHash24") == ParentHashAlgorithm::SIPHASH24); |
| } |
| |
| TEST_CASE("ParentHashAlgorithm - Backward compatibility", "[ParentSelection]") |
| { |
| // Verify default is siphash24 for backward compatibility |
| REQUIRE(parseHashAlgorithm("siphash24") == ParentHashAlgorithm::SIPHASH24); |
| |
| // Verify enum default value is SIPHASH24 |
| ParentHashAlgorithm default_algo = ParentHashAlgorithm::SIPHASH24; |
| REQUIRE(static_cast<int>(default_algo) == 0); |
| |
| // Verify that unrecognized values fall back to siphash24 |
| REQUIRE(parseHashAlgorithm("unknown") == ParentHashAlgorithm::SIPHASH24); |
| } |