Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions domain_tests/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -281,8 +281,10 @@ cc_test(
":domain_testing",
"@abseil-cpp//absl/container:flat_hash_set",
"@abseil-cpp//absl/random",
"@abseil-cpp//absl/strings:string_view",
"@com_google_fuzztest//fuzztest:domain_core",
"@com_google_fuzztest//fuzztest/internal:table_of_recent_compares",
"@com_google_fuzztest//fuzztest/internal/domains:core_domains_impl",
"@googletest//:gtest_main",
],
)
2 changes: 2 additions & 0 deletions domain_tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -275,6 +275,8 @@ fuzztest_cc_test(
fuzztest::domain_testing
absl::flat_hash_set
absl::random_random
absl::status
absl::strings
fuzztest::domain_core
fuzztest::table_of_recent_compares
GTest::gmock_main
Expand Down
18 changes: 18 additions & 0 deletions domain_tests/string_domains_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,10 @@
#include "gtest/gtest.h"
#include "absl/container/flat_hash_set.h"
#include "absl/random/random.h"
#include "absl/strings/string_view.h"
#include "./fuzztest/domain_core.h"
#include "./domain_tests/domain_testing.h"
#include "./fuzztest/internal/domains/container_of_impl.h"
#include "./fuzztest/internal/table_of_recent_compares.h"

namespace fuzztest {
Expand Down Expand Up @@ -225,5 +227,21 @@ TEST(Domain, AsciiStringUsesDictionary) {
EXPECT_THAT(mutants, Contains(HasSubstr("1234")));
}

TEST(StringViewTest, ValidationFailsWhenExceedingDefaultMaxSize) {
auto domain = Arbitrary<std::string_view>();

// Value larger than default max size should be invalid.
std::vector<char> invalid_corpus(internal::kDefaultContainerMaxSize + 1, 'a');
EXPECT_FALSE(domain.ValidateCorpusValue(invalid_corpus).ok());
}

TEST(AbslStringViewTest, ValidationFailsWhenExceedingDefaultMaxSize) {
auto domain = Arbitrary<absl::string_view>();

// Value larger than default max size should be invalid.
std::vector<char> invalid_corpus(internal::kDefaultContainerMaxSize + 1, 'a');
EXPECT_FALSE(domain.ValidateCorpusValue(invalid_corpus).ok());
}

} // namespace
} // namespace fuzztest
8 changes: 4 additions & 4 deletions fuzztest/internal/domains/arbitrary_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -364,8 +364,8 @@ class ArbitraryImpl<std::basic_string_view<Char>>
return IRObject::FromCorpus(v);
}

absl::Status ValidateCorpusValue(const corpus_type&) const {
return absl::OkStatus(); // Nothing to validate.
absl::Status ValidateCorpusValue(const corpus_type& val) const {
return inner_.ValidateCorpusValue(val);
}

private:
Expand Down Expand Up @@ -423,8 +423,8 @@ class ArbitraryImpl<absl::string_view>
return IRObject::FromCorpus(v);
}

absl::Status ValidateCorpusValue(const corpus_type&) const {
return absl::OkStatus(); // Nothing to validate.
absl::Status ValidateCorpusValue(const corpus_type& val) const {
return inner_.ValidateCorpusValue(val);
}

private:
Expand Down
Loading