TestUsageInfo.cpp (3772B)
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */ 3 /* This Source Code Form is subject to the terms of the Mozilla Public 4 * License, v. 2.0. If a copy of the MPL was not distributed with this file, 5 * You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 7 #include <cstdint> 8 #include <ostream> 9 10 #include "gtest/gtest.h" 11 #include "mozilla/Maybe.h" 12 #include "mozilla/dom/quota/QuotaCommon.h" 13 #include "mozilla/dom/quota/UsageInfo.h" 14 15 using namespace mozilla; 16 using namespace mozilla::dom::quota; 17 18 namespace { 19 constexpr uint64_t kTestValue = 42; 20 constexpr uint64_t kTestValueZero = 0; 21 } // namespace 22 23 TEST(DOM_Quota_UsageInfo, DefaultConstructed) 24 { 25 const UsageInfo usageInfo; 26 EXPECT_EQ(Nothing(), usageInfo.FileUsage()); 27 EXPECT_EQ(Nothing(), usageInfo.TotalUsage()); 28 } 29 30 TEST(DOM_Quota_UsageInfo, FileOnly) 31 { 32 const UsageInfo usageInfo = [] { 33 UsageInfo usageInfo; 34 usageInfo += FileUsageType(Some(kTestValue)); 35 return usageInfo; 36 }(); 37 EXPECT_EQ(Some(kTestValue), usageInfo.FileUsage()); 38 EXPECT_EQ(Some(kTestValue), usageInfo.TotalUsage()); 39 } 40 41 TEST(DOM_Quota_UsageInfo, DatabaseOnly) 42 { 43 const UsageInfo usageInfo = [] { 44 UsageInfo usageInfo; 45 usageInfo += DatabaseUsageType(Some(kTestValue)); 46 return usageInfo; 47 }(); 48 EXPECT_EQ(Nothing(), usageInfo.FileUsage()); 49 EXPECT_EQ(Some(kTestValue), usageInfo.TotalUsage()); 50 } 51 52 TEST(DOM_Quota_UsageInfo, FileOnly_Zero) 53 { 54 const UsageInfo usageInfo = [] { 55 UsageInfo usageInfo; 56 usageInfo += FileUsageType(Some(kTestValueZero)); 57 return usageInfo; 58 }(); 59 EXPECT_EQ(Some(kTestValueZero), usageInfo.FileUsage()); 60 EXPECT_EQ(Some(kTestValueZero), usageInfo.TotalUsage()); 61 } 62 63 TEST(DOM_Quota_UsageInfo, DatabaseOnly_Zero) 64 { 65 const UsageInfo usageInfo = [] { 66 UsageInfo usageInfo; 67 usageInfo += DatabaseUsageType(Some(kTestValueZero)); 68 return usageInfo; 69 }(); 70 EXPECT_EQ(Nothing(), usageInfo.FileUsage()); 71 EXPECT_EQ(Some(kTestValueZero), usageInfo.TotalUsage()); 72 } 73 74 TEST(DOM_Quota_UsageInfo, Both) 75 { 76 const UsageInfo usageInfo = [] { 77 UsageInfo usageInfo; 78 usageInfo += FileUsageType(Some(kTestValue)); 79 usageInfo += DatabaseUsageType(Some(kTestValue)); 80 return usageInfo; 81 }(); 82 EXPECT_EQ(Some(kTestValue), usageInfo.FileUsage()); 83 EXPECT_EQ(Some(2 * kTestValue), usageInfo.TotalUsage()); 84 } 85 86 TEST(DOM_Quota_UsageInfo, Both_Zero) 87 { 88 const UsageInfo usageInfo = [] { 89 UsageInfo usageInfo; 90 usageInfo += FileUsageType(Some(kTestValueZero)); 91 usageInfo += DatabaseUsageType(Some(kTestValueZero)); 92 return usageInfo; 93 }(); 94 EXPECT_EQ(Some(kTestValueZero), usageInfo.FileUsage()); 95 EXPECT_EQ(Some(kTestValueZero), usageInfo.TotalUsage()); 96 } 97 98 TEST(DOM_Quota_UsageInfo, CapCombined) 99 { 100 const UsageInfo usageInfo = [] { 101 UsageInfo usageInfo; 102 usageInfo += FileUsageType(Some(UINT64_MAX)); 103 usageInfo += DatabaseUsageType(Some(kTestValue)); 104 return usageInfo; 105 }(); 106 EXPECT_EQ(Some(UINT64_MAX), usageInfo.FileUsage()); 107 EXPECT_EQ(Some(UINT64_MAX), usageInfo.TotalUsage()); 108 } 109 110 TEST(DOM_Quota_UsageInfo, CapFileUsage) 111 { 112 const UsageInfo usageInfo = [] { 113 UsageInfo usageInfo; 114 usageInfo += FileUsageType(Some(UINT64_MAX)); 115 usageInfo += FileUsageType(Some(kTestValue)); 116 return usageInfo; 117 }(); 118 EXPECT_EQ(Some(UINT64_MAX), usageInfo.FileUsage()); 119 EXPECT_EQ(Some(UINT64_MAX), usageInfo.TotalUsage()); 120 } 121 122 TEST(DOM_Quota_UsageInfo, CapDatabaseUsage) 123 { 124 const UsageInfo usageInfo = [] { 125 UsageInfo usageInfo; 126 usageInfo += DatabaseUsageType(Some(UINT64_MAX)); 127 usageInfo += DatabaseUsageType(Some(kTestValue)); 128 return usageInfo; 129 }(); 130 EXPECT_EQ(Nothing(), usageInfo.FileUsage()); 131 EXPECT_EQ(Some(UINT64_MAX), usageInfo.TotalUsage()); 132 }