diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /dom/media/gtest/TestVideoUtils.cpp | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'dom/media/gtest/TestVideoUtils.cpp')
-rw-r--r-- | dom/media/gtest/TestVideoUtils.cpp | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/dom/media/gtest/TestVideoUtils.cpp b/dom/media/gtest/TestVideoUtils.cpp new file mode 100644 index 0000000000..d322d15d64 --- /dev/null +++ b/dom/media/gtest/TestVideoUtils.cpp @@ -0,0 +1,128 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "gtest/gtest.h" +#include "nsMimeTypes.h" +#include "nsString.h" +#include "VideoUtils.h" + +using namespace mozilla; + +TEST(MediaMIMETypes, IsMediaMIMEType) +{ + EXPECT_TRUE(IsMediaMIMEType(AUDIO_MP4)); + EXPECT_TRUE(IsMediaMIMEType(VIDEO_MP4)); + EXPECT_TRUE(IsMediaMIMEType("application/x-mp4")); + + EXPECT_TRUE(IsMediaMIMEType("audio/m")); + EXPECT_FALSE(IsMediaMIMEType("audio/")); + + EXPECT_FALSE(IsMediaMIMEType("vide/mp4")); + EXPECT_FALSE(IsMediaMIMEType("videos/mp4")); + + // Expect lowercase only. + EXPECT_FALSE(IsMediaMIMEType("Video/mp4")); +} + +TEST(StringListRange, MakeStringListRange) +{ + static const struct { + const char* mList; + const char* mExpectedSkipEmpties; + const char* mExpectedProcessAll; + const char* mExpectedProcessEmpties; + } tests[] = { + // string skip all empties + {"", "", "|", ""}, + {" ", "", "|", "|"}, + {",", "", "||", "||"}, + {" , ", "", "||", "||"}, + {"a", "a|", "a|", "a|"}, + {" a ", "a|", "a|", "a|"}, + {"a,", "a|", "a||", "a||"}, + {"a, ", "a|", "a||", "a||"}, + {",a", "a|", "|a|", "|a|"}, + {" ,a", "a|", "|a|", "|a|"}, + {"aa,bb", "aa|bb|", "aa|bb|", "aa|bb|"}, + {" a a , b b ", "a a|b b|", "a a|b b|", "a a|b b|"}, + {" , ,a 1,, ,b 2,", "a 1|b 2|", "||a 1|||b 2||", "||a 1|||b 2||"}}; + + for (const auto& test : tests) { + nsCString list(test.mList); + nsCString out; + for (const auto& item : MakeStringListRange(list)) { + out += item; + out += "|"; + } + EXPECT_STREQ(test.mExpectedSkipEmpties, out.Data()); + out.SetLength(0); + + for (const auto& item : + MakeStringListRange<StringListRangeEmptyItems::ProcessAll>(list)) { + out += item; + out += "|"; + } + EXPECT_STREQ(test.mExpectedProcessAll, out.Data()); + out.SetLength(0); + + for (const auto& item : + MakeStringListRange<StringListRangeEmptyItems::ProcessEmptyItems>( + list)) { + out += item; + out += "|"; + } + EXPECT_STREQ(test.mExpectedProcessEmpties, out.Data()); + } +} + +TEST(StringListRange, StringListContains) +{ + static const struct { + const char* mList; + const char* mItemToSearch; + bool mExpectedSkipEmpties; + bool mExpectedProcessAll; + bool mExpectedProcessEmpties; + } tests[] = {// haystack needle skip all empties + {"", "", false, true, false}, + {" ", "", false, true, true}, + {"", "a", false, false, false}, + {" ", "a", false, false, false}, + {",", "a", false, false, false}, + {" , ", "", false, true, true}, + {" , ", "a", false, false, false}, + {"a", "a", true, true, true}, + {"a", "b", false, false, false}, + {" a ", "a", true, true, true}, + {"aa,bb", "aa", true, true, true}, + {"aa,bb", "bb", true, true, true}, + {"aa,bb", "cc", false, false, false}, + {"aa,bb", " aa ", false, false, false}, + {" a a , b b ", "a a", true, true, true}, + {" , ,a 1,, ,b 2,", "a 1", true, true, true}, + {" , ,a 1,, ,b 2,", "b 2", true, true, true}, + {" , ,a 1,, ,b 2,", "", false, true, true}, + {" , ,a 1,, ,b 2,", " ", false, false, false}, + {" , ,a 1,, ,b 2,", "A 1", false, false, false}, + {" , ,A 1,, ,b 2,", "a 1", false, false, false}}; + + for (const auto& test : tests) { + nsCString list(test.mList); + nsCString itemToSearch(test.mItemToSearch); + EXPECT_EQ(test.mExpectedSkipEmpties, StringListContains(list, itemToSearch)) + << "trying to find \"" << itemToSearch.Data() << "\" in \"" + << list.Data() << "\" (skipping empties)"; + EXPECT_EQ(test.mExpectedProcessAll, + StringListContains<StringListRangeEmptyItems::ProcessAll>( + list, itemToSearch)) + << "trying to find \"" << itemToSearch.Data() << "\" in \"" + << list.Data() << "\" (processing everything)"; + EXPECT_EQ(test.mExpectedProcessEmpties, + StringListContains<StringListRangeEmptyItems::ProcessEmptyItems>( + list, itemToSearch)) + << "trying to find \"" << itemToSearch.Data() << "\" in \"" + << list.Data() << "\" (processing empties)"; + } +} |