diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-07-30 11:37:48 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-07-30 11:38:52 +0200 |
commit | 89e2486a48b739f8d771d69ede5a6a1b244a10fc (patch) | |
tree | 503b1a7812cf97d93704c32437eb5f62dc1a1ff9 /Tools/TestWebKitAPI | |
parent | 625f028249cb37c55bbbd153f3902afd0b0756d9 (diff) | |
download | qtwebkit-89e2486a48b739f8d771d69ede5a6a1b244a10fc.tar.gz |
Imported WebKit commit 0282df8ca7c11d8c8a66ea18543695c69f545a27 (http://svn.webkit.org/repository/webkit/trunk@124002)
New snapshot with prospective Mountain Lion build fix
Diffstat (limited to 'Tools/TestWebKitAPI')
-rw-r--r-- | Tools/TestWebKitAPI/GNUmakefile.am | 1 | ||||
-rw-r--r-- | Tools/TestWebKitAPI/TestWebKitAPI.gypi | 1 | ||||
-rw-r--r-- | Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj | 12 | ||||
-rw-r--r-- | Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp | 79 | ||||
-rw-r--r-- | Tools/TestWebKitAPI/Tests/WTF/MediaTime.cpp | 178 | ||||
-rw-r--r-- | Tools/TestWebKitAPI/Tests/mac/BackForwardList.mm | 72 | ||||
-rw-r--r-- | Tools/TestWebKitAPI/win/TestWebKitAPI.vcproj | 4 |
7 files changed, 347 insertions, 0 deletions
diff --git a/Tools/TestWebKitAPI/GNUmakefile.am b/Tools/TestWebKitAPI/GNUmakefile.am index f79574378..815c43baf 100644 --- a/Tools/TestWebKitAPI/GNUmakefile.am +++ b/Tools/TestWebKitAPI/GNUmakefile.am @@ -53,6 +53,7 @@ Programs_TestWebKitAPI_TestWTF_SOURCES = \ Tools/TestWebKitAPI/Tests/WTF/CheckedArithmeticOperations.cpp \ Tools/TestWebKitAPI/Tests/WTF/Functional.cpp \ Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp \ + Tools/TestWebKitAPI/Tests/WTF/MediaTime.cpp \ Tools/TestWebKitAPI/Tests/WTF/RedBlackTree.cpp \ Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp \ Tools/TestWebKitAPI/Tests/WTF/StringOperators.cpp \ diff --git a/Tools/TestWebKitAPI/TestWebKitAPI.gypi b/Tools/TestWebKitAPI/TestWebKitAPI.gypi index c51187fa0..941e776d5 100644 --- a/Tools/TestWebKitAPI/TestWebKitAPI.gypi +++ b/Tools/TestWebKitAPI/TestWebKitAPI.gypi @@ -34,6 +34,7 @@ 'Tests/WTF/CheckedArithmeticOperations.cpp', 'Tests/WTF/Functional.cpp', 'Tests/WTF/HashMap.cpp', + 'Tests/WTF/MediaTime.cpp', 'Tests/WTF/RedBlackTree.cpp', 'Tests/WTF/StringBuilder.cpp', 'Tests/WTF/StringOperators.cpp', diff --git a/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj b/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj index 26384e3bb..d3664a129 100644 --- a/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj +++ b/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 00CD9F6315BE312C002DA2CE /* BackForwardList.mm in Sources */ = {isa = PBXBuildFile; fileRef = 00CD9F6215BE312C002DA2CE /* BackForwardList.mm */; }; 0BCD833514857CE400EA2003 /* HashMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0BCD833414857CE400EA2003 /* HashMap.cpp */; }; 0BCD856A1485C98B00EA2003 /* TemporaryChange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0BCD85691485C98B00EA2003 /* TemporaryChange.cpp */; }; 0F17BBD615AF6C4D007AB753 /* WebCoreStatisticsWithNoWebProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F17BBD415AF6C4D007AB753 /* WebCoreStatisticsWithNoWebProcess.cpp */; }; @@ -21,6 +22,7 @@ 1ADBEFE3130C6AA100D61D19 /* simple-accelerated-compositing.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 1ADBEFBC130C6A0100D61D19 /* simple-accelerated-compositing.html */; }; 1AEDE22613E5E7E700E62FE8 /* InjectedBundleControllerMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AEDE22413E5E7A000E62FE8 /* InjectedBundleControllerMac.mm */; }; 261516D615B0E60500A2C201 /* SetAndUpdateCacheModel.mm in Sources */ = {isa = PBXBuildFile; fileRef = 261516D515B0E60500A2C201 /* SetAndUpdateCacheModel.mm */; }; + 26B2DFF915BDE599004F691D /* HashSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26B2DFF815BDE599004F691D /* HashSet.cpp */; }; 26DF5A5E15A29BAA003689C2 /* CancelLoadFromResourceLoadDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 26DF5A5D15A29BAA003689C2 /* CancelLoadFromResourceLoadDelegate.mm */; }; 26DF5A6315A2A27E003689C2 /* CancelLoadFromResourceLoadDelegate.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 26DF5A6115A2A22B003689C2 /* CancelLoadFromResourceLoadDelegate.html */; }; 333B9CE21277F23100FEFCE3 /* PreventEmptyUserAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 333B9CE11277F23100FEFCE3 /* PreventEmptyUserAgent.cpp */; }; @@ -156,6 +158,7 @@ C540F784152E5A9A00A40C8C /* verboseMarkup.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = C540F783152E5A7800A40C8C /* verboseMarkup.html */; }; E1220DA0155B25480013E2FC /* MemoryCacheDisableWithinResourceLoadDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = E1220D9F155B25480013E2FC /* MemoryCacheDisableWithinResourceLoadDelegate.mm */; }; E1220DCA155B28AA0013E2FC /* MemoryCacheDisableWithinResourceLoadDelegate.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = E1220DC9155B287D0013E2FC /* MemoryCacheDisableWithinResourceLoadDelegate.html */; }; + CD5497B415857F0C00B5BC30 /* MediaTime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD5497B315857F0C00B5BC30 /* MediaTime.cpp */; }; E490296814E2E3A4002BEDD1 /* TypingStyleCrash.mm in Sources */ = {isa = PBXBuildFile; fileRef = E490296714E2E3A4002BEDD1 /* TypingStyleCrash.mm */; }; F3FC3EE313678B7300126A65 /* libgtest.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F3FC3EE213678B7300126A65 /* libgtest.a */; }; F660AA0D15A5F061003A1243 /* GetInjectedBundleInitializationUserDataCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F660AA0C15A5F061003A1243 /* GetInjectedBundleInitializationUserDataCallback.cpp */; }; @@ -232,6 +235,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 00CD9F6215BE312C002DA2CE /* BackForwardList.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = BackForwardList.mm; sourceTree = "<group>"; }; 0BCD833414857CE400EA2003 /* HashMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HashMap.cpp; path = WTF/HashMap.cpp; sourceTree = "<group>"; }; 0BCD85691485C98B00EA2003 /* TemporaryChange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TemporaryChange.cpp; path = WTF/TemporaryChange.cpp; sourceTree = "<group>"; }; 0F17BBD415AF6C4D007AB753 /* WebCoreStatisticsWithNoWebProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebCoreStatisticsWithNoWebProcess.cpp; sourceTree = "<group>"; }; @@ -245,6 +249,7 @@ 1ADBEFBC130C6A0100D61D19 /* simple-accelerated-compositing.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "simple-accelerated-compositing.html"; sourceTree = "<group>"; }; 1AEDE22413E5E7A000E62FE8 /* InjectedBundleControllerMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = InjectedBundleControllerMac.mm; sourceTree = "<group>"; }; 261516D515B0E60500A2C201 /* SetAndUpdateCacheModel.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SetAndUpdateCacheModel.mm; sourceTree = "<group>"; }; + 26B2DFF815BDE599004F691D /* HashSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HashSet.cpp; path = WTF/HashSet.cpp; sourceTree = "<group>"; }; 26DF5A5D15A29BAA003689C2 /* CancelLoadFromResourceLoadDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CancelLoadFromResourceLoadDelegate.mm; sourceTree = "<group>"; }; 26DF5A6115A2A22B003689C2 /* CancelLoadFromResourceLoadDelegate.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = CancelLoadFromResourceLoadDelegate.html; sourceTree = "<group>"; }; 333B9CE11277F23100FEFCE3 /* PreventEmptyUserAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PreventEmptyUserAgent.cpp; sourceTree = "<group>"; }; @@ -396,6 +401,7 @@ C540F783152E5A7800A40C8C /* verboseMarkup.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = verboseMarkup.html; sourceTree = "<group>"; }; E1220D9F155B25480013E2FC /* MemoryCacheDisableWithinResourceLoadDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MemoryCacheDisableWithinResourceLoadDelegate.mm; sourceTree = "<group>"; }; E1220DC9155B287D0013E2FC /* MemoryCacheDisableWithinResourceLoadDelegate.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = MemoryCacheDisableWithinResourceLoadDelegate.html; sourceTree = "<group>"; }; + CD5497B315857F0C00B5BC30 /* MediaTime.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MediaTime.cpp; path = WTF/MediaTime.cpp; sourceTree = "<group>"; }; E490296714E2E3A4002BEDD1 /* TypingStyleCrash.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = TypingStyleCrash.mm; sourceTree = "<group>"; }; F3FC3EE213678B7300126A65 /* libgtest.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgtest.a; sourceTree = BUILT_PRODUCTS_DIR; }; F660AA0C15A5F061003A1243 /* GetInjectedBundleInitializationUserDataCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GetInjectedBundleInitializationUserDataCallback.cpp; sourceTree = "<group>"; }; @@ -615,11 +621,13 @@ children = ( BC029B1A1486B23800817DA9 /* ns */, C0991C4F143C7D68007998F2 /* cf */, + CD5497B315857F0C00B5BC30 /* MediaTime.cpp */, 0FC6C4CE141034AD005B7F0C /* MetaAllocator.cpp */, 0FC6C4CB141027E0005B7F0C /* RedBlackTree.cpp */, A7A966DA140ECCC8005EF9B4 /* CheckedArithmeticOperations.cpp */, 1AA9E55714980A9900001A8A /* Functional.cpp */, 0BCD833414857CE400EA2003 /* HashMap.cpp */, + 26B2DFF815BDE599004F691D /* HashSet.cpp */, 81B50192140F232300D9EB58 /* StringBuilder.cpp */, C01363C713C3997300EF3964 /* StringOperators.cpp */, 0BCD85691485C98B00EA2003 /* TemporaryChange.cpp */, @@ -710,6 +718,7 @@ E490296714E2E3A4002BEDD1 /* TypingStyleCrash.mm */, 51FBBB4C1513D4E900822738 /* WebViewCanPasteURL.mm */, A5E2027215B2181900C13E14 /* WindowlessWebViewWithMedia.mm */, + 00CD9F6215BE312C002DA2CE /* BackForwardList.mm */, ); path = mac; sourceTree = "<group>"; @@ -945,6 +954,9 @@ 0F17BBD615AF6C4D007AB753 /* WebCoreStatisticsWithNoWebProcess.cpp in Sources */, 261516D615B0E60500A2C201 /* SetAndUpdateCacheModel.mm in Sources */, A5E2027315B2181900C13E14 /* WindowlessWebViewWithMedia.mm in Sources */, + 26B2DFF915BDE599004F691D /* HashSet.cpp in Sources */, + 00CD9F6315BE312C002DA2CE /* BackForwardList.mm in Sources */, + CD5497B415857F0C00B5BC30 /* MediaTime.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp b/Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp new file mode 100644 index 000000000..71e21aa28 --- /dev/null +++ b/Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2012 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" + +#include <wtf/HashSet.h> + +namespace TestWebKitAPI { + +template<int initialCapacity> + struct InitialCapacityTestHashTraits : public WTF::UnsignedWithZeroKeyHashTraits<int> { + static const int minimumTableSize = initialCapacity; +}; + +template<unsigned size> +void testInitialCapacity() +{ + const unsigned initialCapacity = WTF::HashTableCapacityForSize<size>::value; + HashSet<int, DefaultHash<int>::Hash, InitialCapacityTestHashTraits<initialCapacity> > testSet; + + // Initial capacity is null. + ASSERT_EQ(0, testSet.capacity()); + + // Adding items up to size should never change the capacity. + for (size_t i = 0; i < size; ++i) { + testSet.add(i); + ASSERT_EQ(initialCapacity, static_cast<unsigned>(testSet.capacity())); + } + + // Adding items up to less than half the capacity should not change the capacity. + unsigned capacityLimit = initialCapacity / 2 - 1; + for (size_t i = size; i < capacityLimit; ++i) { + testSet.add(i); + ASSERT_EQ(initialCapacity, static_cast<unsigned>(testSet.capacity())); + } + + // Adding one more item increase the capacity. + testSet.add(initialCapacity); + EXPECT_GT(static_cast<unsigned>(testSet.capacity()), initialCapacity); +} + +template<unsigned size> void generateTestCapacityUpToSize(); +template<> void generateTestCapacityUpToSize<0>() +{ +} +template<unsigned size> void generateTestCapacityUpToSize() +{ + generateTestCapacityUpToSize<size - 1>(); + testInitialCapacity<size>(); +} + +TEST(WTF, HashSetInitialCapacity) +{ + generateTestCapacityUpToSize<128>(); +} + +} // namespace TestWebKitAPI diff --git a/Tools/TestWebKitAPI/Tests/WTF/MediaTime.cpp b/Tools/TestWebKitAPI/Tests/WTF/MediaTime.cpp new file mode 100644 index 000000000..3f02a0f67 --- /dev/null +++ b/Tools/TestWebKitAPI/Tests/WTF/MediaTime.cpp @@ -0,0 +1,178 @@ +/* + * Copyright (C) 2012 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#define _USE_MATH_DEFINES 1 +#include "config.h" + +#include <wtf/MediaTime.h> + +using namespace std; + +#if COMPILER(MSVC) +// Work around Visual Studio 2008's lack of an INFINITY or NAN definition. +#include <limits> +#if !defined(INFINITY) +#define INFINITY (numeric_limits<double>::infinity()) +#endif +#if !defined(NAN) +#define NAN (numeric_limits<double>::quiet_NaN()) +#endif +#endif + +namespace WTF { + +std::ostream& operator<<(std::ostream& out, const MediaTime& val) +{ + out << "{ "; + if (val.isInvalid()) + out << "invalid"; + else if (val.isPositiveInfinite()) + out << "+infinite"; + else if (val.isNegativeInfinite()) + out << "-infinite"; + else + out << "value: " << val.timeValue() << ", scale: " << val.timeScale(); + return out << " }"; +} + +} + +namespace TestWebKitAPI { + +TEST(WTF, MediaTime) +{ + // Comparison Operators + EXPECT_EQ(MediaTime::positiveInfiniteTime() > MediaTime::negativeInfiniteTime(), true); + EXPECT_EQ(MediaTime::negativeInfiniteTime() < MediaTime::positiveInfiniteTime(), true); + EXPECT_EQ(MediaTime::negativeInfiniteTime() == MediaTime::negativeInfiniteTime(), true); + EXPECT_EQ(MediaTime::positiveInfiniteTime() == MediaTime::positiveInfiniteTime(), true); + EXPECT_EQ(MediaTime::invalidTime() == MediaTime::invalidTime(), true); + EXPECT_EQ(MediaTime::invalidTime() > MediaTime::negativeInfiniteTime(), true); + EXPECT_EQ(MediaTime::invalidTime() > MediaTime::positiveInfiniteTime(), true); + EXPECT_EQ(MediaTime::negativeInfiniteTime() < MediaTime::invalidTime(), true); + EXPECT_EQ(MediaTime::positiveInfiniteTime() < MediaTime::invalidTime(), true); + EXPECT_EQ(MediaTime::indefiniteTime() == MediaTime::indefiniteTime(), true); + EXPECT_EQ(MediaTime::indefiniteTime() > MediaTime::negativeInfiniteTime(), true); + EXPECT_EQ(MediaTime::indefiniteTime() < MediaTime::positiveInfiniteTime(), true); + EXPECT_EQ(MediaTime::negativeInfiniteTime() < MediaTime::indefiniteTime(), true); + EXPECT_EQ(MediaTime::positiveInfiniteTime() > MediaTime::indefiniteTime(), true); + EXPECT_EQ(MediaTime(1, 1) < MediaTime::indefiniteTime(), true); + EXPECT_EQ(MediaTime::indefiniteTime() > MediaTime(1, 1), true); + EXPECT_EQ(MediaTime(1, 1) < MediaTime(2, 1), true); + EXPECT_EQ(MediaTime(2, 1) > MediaTime(1, 1), true); + EXPECT_EQ(MediaTime(2, 1) == MediaTime(2, 1), true); + EXPECT_EQ(MediaTime(2, 1) == MediaTime(4, 2), true); + + // Addition Operators + EXPECT_EQ(MediaTime::positiveInfiniteTime() + MediaTime::positiveInfiniteTime(), MediaTime::positiveInfiniteTime()); + EXPECT_EQ(MediaTime::negativeInfiniteTime() + MediaTime::negativeInfiniteTime(), MediaTime::negativeInfiniteTime()); + EXPECT_EQ(MediaTime::positiveInfiniteTime() + MediaTime::negativeInfiniteTime(), MediaTime::invalidTime()); + EXPECT_EQ(MediaTime::negativeInfiniteTime() + MediaTime::positiveInfiniteTime(), MediaTime::invalidTime()); + EXPECT_EQ(MediaTime::invalidTime() + MediaTime::positiveInfiniteTime(), MediaTime::invalidTime()); + EXPECT_EQ(MediaTime::invalidTime() + MediaTime::negativeInfiniteTime(), MediaTime::invalidTime()); + EXPECT_EQ(MediaTime::invalidTime() + MediaTime::invalidTime(), MediaTime::invalidTime()); + EXPECT_EQ(MediaTime::invalidTime() + MediaTime(1, 1), MediaTime::invalidTime()); + EXPECT_EQ(MediaTime::indefiniteTime() + MediaTime::positiveInfiniteTime(), MediaTime::indefiniteTime()); + EXPECT_EQ(MediaTime::indefiniteTime() + MediaTime::negativeInfiniteTime(), MediaTime::indefiniteTime()); + EXPECT_EQ(MediaTime::indefiniteTime() + MediaTime::indefiniteTime(), MediaTime::indefiniteTime()); + EXPECT_EQ(MediaTime::indefiniteTime() + MediaTime(1, 1), MediaTime::indefiniteTime()); + EXPECT_EQ(MediaTime(1, 1) + MediaTime(1, 1), MediaTime(2, 1)); + EXPECT_EQ(MediaTime(1, 2) + MediaTime(1, 3), MediaTime(5, 6)); + EXPECT_EQ(MediaTime(1, numeric_limits<int32_t>::max()-1) + MediaTime(1, numeric_limits<int32_t>::max()-2), MediaTime(2, numeric_limits<int32_t>::max())); + + // Subtraction Operators + EXPECT_EQ(MediaTime::positiveInfiniteTime() - MediaTime::positiveInfiniteTime(), MediaTime::invalidTime()); + EXPECT_EQ(MediaTime::negativeInfiniteTime() - MediaTime::negativeInfiniteTime(), MediaTime::invalidTime()); + EXPECT_EQ(MediaTime::positiveInfiniteTime() - MediaTime::negativeInfiniteTime(), MediaTime::positiveInfiniteTime()); + EXPECT_EQ(MediaTime::negativeInfiniteTime() - MediaTime::positiveInfiniteTime(), MediaTime::negativeInfiniteTime()); + EXPECT_EQ(MediaTime::invalidTime() - MediaTime::positiveInfiniteTime(), MediaTime::invalidTime()); + EXPECT_EQ(MediaTime::invalidTime() - MediaTime::negativeInfiniteTime(), MediaTime::invalidTime()); + EXPECT_EQ(MediaTime::invalidTime() - MediaTime::invalidTime(), MediaTime::invalidTime()); + EXPECT_EQ(MediaTime::invalidTime() - MediaTime(1, 1), MediaTime::invalidTime()); + EXPECT_EQ(MediaTime::indefiniteTime() - MediaTime::positiveInfiniteTime(), MediaTime::indefiniteTime()); + EXPECT_EQ(MediaTime::indefiniteTime() - MediaTime::negativeInfiniteTime(), MediaTime::indefiniteTime()); + EXPECT_EQ(MediaTime::indefiniteTime() - MediaTime::indefiniteTime(), MediaTime::indefiniteTime()); + EXPECT_EQ(MediaTime::indefiniteTime() - MediaTime(1, 1), MediaTime::indefiniteTime()); + EXPECT_EQ(MediaTime(3, 1) - MediaTime(2, 1), MediaTime(1, 1)); + EXPECT_EQ(MediaTime(1, 2) - MediaTime(1, 3), MediaTime(1, 6)); + EXPECT_EQ(MediaTime(2, numeric_limits<int32_t>::max()-1) - MediaTime(1, numeric_limits<int32_t>::max()-2), MediaTime(1, numeric_limits<int32_t>::max())); + + // Constants + EXPECT_EQ(MediaTime::zeroTime(), MediaTime(0, 1)); + EXPECT_EQ(MediaTime::invalidTime(), MediaTime(-1, 1, 0)); + EXPECT_EQ(MediaTime::positiveInfiniteTime(), MediaTime(0, 1, MediaTime::PositiveInfinite)); + EXPECT_EQ(MediaTime::negativeInfiniteTime(), MediaTime(0, 1, MediaTime::NegativeInfinite)); + EXPECT_EQ(MediaTime::indefiniteTime(), MediaTime(0, 1, MediaTime::Indefinite)); + + // Absolute Functions + EXPECT_EQ(abs(MediaTime::positiveInfiniteTime()), MediaTime::positiveInfiniteTime()); + EXPECT_EQ(abs(MediaTime::negativeInfiniteTime()), MediaTime::positiveInfiniteTime()); + EXPECT_EQ(abs(MediaTime::invalidTime()), MediaTime::invalidTime()); + EXPECT_EQ(abs(MediaTime(1, 1)), MediaTime(1, 1)); + EXPECT_EQ(abs(MediaTime(-1, 1)), MediaTime(1, 1)); + EXPECT_EQ(abs(MediaTime(-1, -1)), MediaTime(-1, -1)); + EXPECT_EQ(abs(MediaTime(1, -1)), MediaTime(-1, -1)); + + // Floating Point Functions + EXPECT_EQ(MediaTime::createWithFloat(1.0f), MediaTime(1, 1)); + EXPECT_EQ(MediaTime::createWithFloat(1.5f), MediaTime(3, 2)); + EXPECT_EQ(MediaTime::createWithDouble(1.0), MediaTime(1, 1)); + EXPECT_EQ(MediaTime::createWithDouble(1.5), MediaTime(3, 2)); + EXPECT_EQ(MediaTime(1, 1).toFloat(), 1.0f); + EXPECT_EQ(MediaTime(3, 2).toFloat(), 1.5f); + EXPECT_EQ(MediaTime(1, 1).toDouble(), 1.0); + EXPECT_EQ(MediaTime(3, 2).toDouble(), 1.5); + EXPECT_EQ(MediaTime(1, 1 << 16).toFloat(), 1 / pow(2.0f, 16.0f)); + EXPECT_EQ(MediaTime(1, 1 << 30).toDouble(), 1 / pow(2.0, 30.0)); + EXPECT_EQ(MediaTime::createWithDouble(M_PI, 1 << 30), MediaTime(3373259426, 1 << 30)); + EXPECT_EQ(MediaTime::createWithFloat(INFINITY), MediaTime::positiveInfiniteTime()); + EXPECT_EQ(MediaTime::createWithFloat(-INFINITY), MediaTime::negativeInfiniteTime()); + EXPECT_EQ(MediaTime::createWithFloat(NAN), MediaTime::invalidTime()); + EXPECT_EQ(MediaTime::createWithDouble(INFINITY), MediaTime::positiveInfiniteTime()); + EXPECT_EQ(MediaTime::createWithDouble(-INFINITY), MediaTime::negativeInfiniteTime()); + EXPECT_EQ(MediaTime::createWithDouble(NAN), MediaTime::invalidTime()); + + // Overflow Behavior + EXPECT_EQ(MediaTime::createWithFloat(pow(2.0f, 64.0f)), MediaTime::positiveInfiniteTime()); + EXPECT_EQ(MediaTime::createWithFloat(-pow(2.0f, 64.0f)), MediaTime::negativeInfiniteTime()); + EXPECT_EQ(MediaTime::createWithFloat(pow(2.0f, 63.0f), 2).timeScale(), 1); + EXPECT_EQ(MediaTime::createWithFloat(pow(2.0f, 63.0f), 3).timeScale(), 1); + EXPECT_EQ(MediaTime::createWithDouble(pow(2.0, 64.0)), MediaTime::positiveInfiniteTime()); + EXPECT_EQ(MediaTime::createWithDouble(-pow(2.0, 64.0)), MediaTime::negativeInfiniteTime()); + EXPECT_EQ(MediaTime::createWithDouble(pow(2.0, 63.0), 2).timeScale(), 1); + EXPECT_EQ(MediaTime::createWithDouble(pow(2.0, 63.0), 3).timeScale(), 1); + EXPECT_EQ((MediaTime(numeric_limits<int64_t>::max(), 2) + MediaTime(numeric_limits<int64_t>::max(), 2)).timeScale(), 1); + EXPECT_EQ((MediaTime(numeric_limits<int64_t>::min(), 2) - MediaTime(numeric_limits<int64_t>::max(), 2)).timeScale(), 1); + EXPECT_EQ(MediaTime(numeric_limits<int64_t>::max(), 1) + MediaTime(numeric_limits<int64_t>::max(), 1), MediaTime::positiveInfiniteTime()); + EXPECT_EQ(MediaTime(numeric_limits<int64_t>::min(), 1) + MediaTime(numeric_limits<int64_t>::min(), 1), MediaTime::negativeInfiniteTime()); + EXPECT_EQ(MediaTime(numeric_limits<int64_t>::min(), 1) - MediaTime(numeric_limits<int64_t>::max(), 1), MediaTime::negativeInfiniteTime()); + EXPECT_EQ(MediaTime(numeric_limits<int64_t>::max(), 1) - MediaTime(numeric_limits<int64_t>::min(), 1), MediaTime::positiveInfiniteTime()); +} + +} + diff --git a/Tools/TestWebKitAPI/Tests/mac/BackForwardList.mm b/Tools/TestWebKitAPI/Tests/mac/BackForwardList.mm new file mode 100644 index 000000000..098453d18 --- /dev/null +++ b/Tools/TestWebKitAPI/Tests/mac/BackForwardList.mm @@ -0,0 +1,72 @@ +/* + * Copyright (C) 2012 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "PlatformUtilities.h" +#include "PlatformWebView.h" +#include <wtf/RetainPtr.h> + +#include <WebKit/WebBackForwardList.h> + +@interface BackForwardListTest : NSObject { +} +@end + +static bool didFinishLoad; + +@implementation BackForwardListTest + +- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame +{ + didFinishLoad = true; +} + +- (void)webView:(WebView *)sender didFailProvisionalLoadWithError:(NSError *)error forFrame:(WebFrame *)frame +{ + [frame loadAlternateHTMLString:@"<html></html>" baseURL:[NSURL URLWithString:@"about:blank"] forUnreachableURL:[[error userInfo] valueForKey:NSURLErrorFailingURLErrorKey]]; +} + +@end + +namespace TestWebKitAPI { + +TEST(WebKit1, ReloadBackForward) +{ + RetainPtr<WebView> webView(AdoptNS, [[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]); + RetainPtr<BackForwardListTest> testController(AdoptNS, [BackForwardListTest new]); + webView.get().frameLoadDelegate = testController.get(); + [[webView.get() mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://does-not-exist.example"]]]; + Util::run(&didFinishLoad); + didFinishLoad = false; + + [[webView.get() mainFrame] reload]; + Util::run(&didFinishLoad); + didFinishLoad = false; + + WebBackForwardList *bfList = [webView.get() backForwardList]; + EXPECT_EQ(0, [bfList backListCount]); +} + +} // namespace TestWebKitAPI diff --git a/Tools/TestWebKitAPI/win/TestWebKitAPI.vcproj b/Tools/TestWebKitAPI/win/TestWebKitAPI.vcproj index 000f15e18..a941cd686 100644 --- a/Tools/TestWebKitAPI/win/TestWebKitAPI.vcproj +++ b/Tools/TestWebKitAPI/win/TestWebKitAPI.vcproj @@ -652,6 +652,10 @@ > </File> <File + RelativePath="..\Tests\WTF\MediaTime.cpp" + > + </File> + <File RelativePath="..\Tests\WTF\StringOperators.cpp" > </File> |