/* -*- 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)
";
}
}
Messung V0.5 C=90 H=95 G=92
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet)
¤
*© Formatika GbR, Deutschland