Aleph-w 3.0
A C++ Library for Data Structures and Algorithms
Loading...
Searching...
No Matches
fibonacci_heap_test.cc File Reference

Tests for Fibonacci Heap. More...

#include <gtest/gtest.h>
#include <numeric>
#include <tpl_fibonacci_heap.H>
#include <vector>
#include <algorithm>
#include <random>
#include <string>
#include <set>
#include <chrono>
#include <functional>
Include dependency graph for fibonacci_heap_test.cc:

Go to the source code of this file.

Classes

class  FibonacciHeapTest
 
class  FibonacciHeapWithDataTest
 
struct  Point
 

Functions

 TEST (FibonacciHeapConstruction, DefaultConstructor)
 
 TEST (FibonacciHeapConstruction, ConstructorWithComparator)
 
 TEST (FibonacciHeapConstruction, MoveConstructor)
 
 TEST (FibonacciHeapConstruction, MoveAssignment)
 
 TEST (FibonacciHeapConstruction, MoveAssignmentRoundtrip)
 
 TEST_F (FibonacciHeapTest, InsertSingleElement)
 
 TEST_F (FibonacciHeapTest, InsertMultipleElements)
 
 TEST_F (FibonacciHeapTest, InsertDescendingOrder)
 
 TEST_F (FibonacciHeapTest, InsertAscendingOrder)
 
 TEST_F (FibonacciHeapTest, InsertDuplicates)
 
 TEST_F (FibonacciHeapTest, InsertWithMoveSemantics)
 
 TEST_F (FibonacciHeapTest, EmplaceConstruction)
 
 TEST_F (FibonacciHeapTest, GetMinOnEmptyHeapThrows)
 
 TEST_F (FibonacciHeapTest, GetMinNodeOnEmptyHeap)
 
 TEST_F (FibonacciHeapTest, GetMinAfterInserts)
 
 TEST_F (FibonacciHeapTest, ExtractMinOnEmptyHeapThrows)
 
 TEST_F (FibonacciHeapTest, ExtractMinSingleElement)
 
 TEST_F (FibonacciHeapTest, ExtractMinMultipleElements)
 
 TEST_F (FibonacciHeapTest, ExtractMinMaintainsSortedOrder)
 
 TEST_F (FibonacciHeapTest, ExtractMinWithDuplicates)
 
 TEST_F (FibonacciHeapWithDataTest, DecreaseKeyToNewMinimum)
 
 TEST_F (FibonacciHeapWithDataTest, DecreaseKeyNotAffectingMinimum)
 
 TEST_F (FibonacciHeapWithDataTest, DecreaseKeyToSameValue)
 
 TEST_F (FibonacciHeapTest, DecreaseKeyWithInvalidIncreaseThrows)
 
 TEST_F (FibonacciHeapTest, DecreaseKeyWithNullptrThrows)
 
 TEST_F (FibonacciHeapTest, DecreaseKeyTriggersCut)
 
 TEST_F (FibonacciHeapTest, DecreaseKeyTriggersCascadingCuts)
 
 TEST_F (FibonacciHeapTest, DecreaseKeyMoveSemantics)
 
 TEST_F (FibonacciHeapTest, UpdateKeyDecrease)
 
 TEST_F (FibonacciHeapTest, UpdateKeyIncrease)
 
 TEST_F (FibonacciHeapTest, UpdateKeySameValue)
 
 TEST_F (FibonacciHeapTest, UpdateKeyNullptrThrows)
 
 TEST_F (FibonacciHeapTest, DeleteNodeSingleElement)
 
 TEST_F (FibonacciHeapTest, DeleteNodeMinimum)
 
 TEST_F (FibonacciHeapTest, DeleteNodeNonMinimum)
 
 TEST_F (FibonacciHeapTest, DeleteNodeNullptrThrows)
 
 TEST_F (FibonacciHeapTest, DeleteNodeFromDeepTree)
 
 TEST_F (FibonacciHeapTest, DeleteSolitaryRootWithChildren)
 
 TEST_F (FibonacciHeapTest, DeleteSolitaryRootWithChildrenDirect)
 
 TEST_F (FibonacciHeapTest, DeleteAllNodesOneByOne)
 
 TEST_F (FibonacciHeapTest, MergeEmptyHeaps)
 
 TEST_F (FibonacciHeapTest, MergeIntoEmptyHeap)
 
 TEST_F (FibonacciHeapTest, MergeEmptyIntoNonEmpty)
 
 TEST_F (FibonacciHeapTest, MergeTwoNonEmptyHeaps)
 
 TEST_F (FibonacciHeapTest, MergeWithRvalue)
 
 TEST_F (FibonacciHeapTest, MergeLargeHeaps)
 
 TEST_F (FibonacciHeapTest, SwapHeaps)
 
 TEST_F (FibonacciHeapTest, SwapWithEmptyHeap)
 
 TEST_F (FibonacciHeapTest, SwapFreeFunction)
 
 TEST_F (FibonacciHeapTest, ClearEmptyHeap)
 
 TEST_F (FibonacciHeapTest, ClearNonEmptyHeap)
 
 TEST_F (FibonacciHeapTest, ClearAndReuse)
 
 TEST (FibonacciHeapTypeAliases, ValueType)
 
 TEST (FibonacciHeapTypeAliases, HandleType)
 
 TEST (FibonacciMaxHeap, BasicOperations)
 
 TEST (FibonacciMaxHeap, DecreaseKey)
 
 TEST (FibonacciHeapCustomType, PointHeap)
 
 TEST (FibonacciHeapCustomType, PairHeap)
 
 TEST (FibonacciHeapStress, LargeNumberOfInserts)
 
 TEST (FibonacciHeapStress, LargeNumberOfExtractMin)
 
 TEST (FibonacciHeapStress, InterleavedOperations)
 
 TEST (FibonacciHeapStress, ManyDecreaseKeys)
 
 TEST (FibonacciHeapStress, ManyDeleteNodes)
 
 TEST (FibonacciHeapStress, ManyMerges)
 
 TEST (FibonacciHeapEdgeCases, NegativeNumbers)
 
 TEST (FibonacciHeapEdgeCases, IntMinMax)
 
 TEST (FibonacciHeapEdgeCases, SingleElementOperations)
 
 TEST (FibonacciHeapEdgeCases, AlternatingMinMax)
 
template<typename T , typename Compare >
bool verify_heap_property (Fibonacci_Heap< T, Compare > &heap)
 
 TEST (FibonacciHeapProperty, RandomInsertions)
 
 TEST (FibonacciHeapProperty, AfterDecreaseKeys)
 
 TEST (FibonacciHeapProperty, AfterMerge)
 
 TEST (FibonacciHeapMemory, DestructorFreesMemory)
 
 TEST (FibonacciHeapMemory, ClearFreesMemory)
 
 TEST (FibonacciHeapPerformance, DISABLED_TimingComparison)
 
 TEST (FibonacciHeapUsagePattern, DijkstraSimulation)
 
 TEST (FibonacciHeapComparator, KeyComp)
 
 TEST (FibonacciHeapComparator, CustomLambdaComparator)
 
 TEST (FibonacciHeapEdgeCases, DecreaseKeyOnRootNode)
 
 TEST (FibonacciHeapEdgeCases, DecreaseKeyChildBecomesSmallerThanParent)
 
 TEST (FibonacciHeapEdgeCases, DeleteNodeWithMultipleChildren)
 
 TEST (FibonacciHeapEdgeCases, MergeSelfNoOp)
 
 TEST (FibonacciHeapEdgeCases, UpdateKeyToSameValueOnChild)
 
 TEST (FibonacciHeapEdgeCases, ConsecutiveDecreaseKeys)
 
 TEST (FibonacciHeapEdgeCases, EmplaceWithSingleArg)
 
 TEST (FibonacciHeapEdgeCases, LargeDegreeTrees)
 
 TEST (FibonacciHeapEdgeCases, SwapEmptyHeaps)
 
 TEST (FibonacciHeapEdgeCases, MoveAssignToSelf)
 
 TEST (FibonacciHeapEdgeCases, DeleteLastTwoNodes)
 
 TEST (FibonacciHeapRegression, DeleteAloneRootWithChildren)
 
 TEST (FibonacciHeapRegression, CascadingCutsChain)
 
int main (int argc, char **argv)
 

Detailed Description

Tests for Fibonacci Heap.

Definition in file fibonacci_heap_test.cc.

Function Documentation

◆ main()

int main ( int  argc,
char **  argv 
)

◆ TEST() [1/43]

TEST ( FibonacciHeapComparator  ,
CustomLambdaComparator   
)

◆ TEST() [2/43]

TEST ( FibonacciHeapComparator  ,
KeyComp   
)

◆ TEST() [3/43]

TEST ( FibonacciHeapConstruction  ,
ConstructorWithComparator   
)

◆ TEST() [4/43]

TEST ( FibonacciHeapConstruction  ,
DefaultConstructor   
)

Definition at line 84 of file fibonacci_heap_test.cc.

References Aleph::blossom_maximum_cardinality_matching(), and h.

◆ TEST() [5/43]

TEST ( FibonacciHeapConstruction  ,
MoveAssignment   
)

◆ TEST() [6/43]

TEST ( FibonacciHeapConstruction  ,
MoveAssignmentRoundtrip   
)

◆ TEST() [7/43]

TEST ( FibonacciHeapConstruction  ,
MoveConstructor   
)

◆ TEST() [8/43]

TEST ( FibonacciHeapCustomType  ,
PairHeap   
)

◆ TEST() [9/43]

TEST ( FibonacciHeapCustomType  ,
PointHeap   
)

◆ TEST() [10/43]

◆ TEST() [11/43]

◆ TEST() [12/43]

◆ TEST() [13/43]

◆ TEST() [14/43]

◆ TEST() [15/43]

◆ TEST() [16/43]

TEST ( FibonacciHeapEdgeCases  ,
EmplaceWithSingleArg   
)

◆ TEST() [17/43]

◆ TEST() [18/43]

◆ TEST() [19/43]

◆ TEST() [20/43]

TEST ( FibonacciHeapEdgeCases  ,
MoveAssignToSelf   
)

◆ TEST() [21/43]

◆ TEST() [22/43]

◆ TEST() [23/43]

TEST ( FibonacciHeapEdgeCases  ,
SwapEmptyHeaps   
)

◆ TEST() [24/43]

◆ TEST() [25/43]

TEST ( FibonacciHeapMemory  ,
ClearFreesMemory   
)

◆ TEST() [26/43]

TEST ( FibonacciHeapMemory  ,
DestructorFreesMemory   
)

◆ TEST() [27/43]

◆ TEST() [28/43]

◆ TEST() [29/43]

TEST ( FibonacciHeapProperty  ,
AfterMerge   
)

◆ TEST() [30/43]

TEST ( FibonacciHeapProperty  ,
RandomInsertions   
)

◆ TEST() [31/43]

◆ TEST() [32/43]

◆ TEST() [33/43]

◆ TEST() [34/43]

◆ TEST() [35/43]

◆ TEST() [36/43]

◆ TEST() [37/43]

◆ TEST() [38/43]

TEST ( FibonacciHeapStress  ,
ManyMerges   
)

◆ TEST() [39/43]

TEST ( FibonacciHeapTypeAliases  ,
HandleType   
)

Definition at line 827 of file fibonacci_heap_test.cc.

◆ TEST() [40/43]

TEST ( FibonacciHeapTypeAliases  ,
ValueType   
)

Definition at line 821 of file fibonacci_heap_test.cc.

◆ TEST() [41/43]

TEST ( FibonacciHeapUsagePattern  ,
DijkstraSimulation   
)

◆ TEST() [42/43]

TEST ( FibonacciMaxHeap  ,
BasicOperations   
)

◆ TEST() [43/43]

TEST ( FibonacciMaxHeap  ,
DecreaseKey   
)

◆ TEST_F() [1/47]

TEST_F ( FibonacciHeapTest  ,
ClearAndReuse   
)

◆ TEST_F() [2/47]

TEST_F ( FibonacciHeapTest  ,
ClearEmptyHeap   
)

◆ TEST_F() [3/47]

TEST_F ( FibonacciHeapTest  ,
ClearNonEmptyHeap   
)

◆ TEST_F() [4/47]

TEST_F ( FibonacciHeapTest  ,
DecreaseKeyMoveSemantics   
)

◆ TEST_F() [5/47]

TEST_F ( FibonacciHeapTest  ,
DecreaseKeyTriggersCascadingCuts   
)

Definition at line 378 of file fibonacci_heap_test.cc.

References Aleph::blossom_maximum_cardinality_matching(), and nodes.

◆ TEST_F() [6/47]

TEST_F ( FibonacciHeapTest  ,
DecreaseKeyTriggersCut   
)

◆ TEST_F() [7/47]

TEST_F ( FibonacciHeapTest  ,
DecreaseKeyWithInvalidIncreaseThrows   
)

◆ TEST_F() [8/47]

TEST_F ( FibonacciHeapTest  ,
DecreaseKeyWithNullptrThrows   
)

◆ TEST_F() [9/47]

TEST_F ( FibonacciHeapTest  ,
DeleteAllNodesOneByOne   
)

Definition at line 613 of file fibonacci_heap_test.cc.

References Aleph::blossom_maximum_cardinality_matching(), and nodes.

◆ TEST_F() [10/47]

TEST_F ( FibonacciHeapTest  ,
DeleteNodeFromDeepTree   
)

Definition at line 507 of file fibonacci_heap_test.cc.

References Aleph::blossom_maximum_cardinality_matching(), and nodes.

◆ TEST_F() [11/47]

TEST_F ( FibonacciHeapTest  ,
DeleteNodeMinimum   
)

◆ TEST_F() [12/47]

TEST_F ( FibonacciHeapTest  ,
DeleteNodeNonMinimum   
)

◆ TEST_F() [13/47]

TEST_F ( FibonacciHeapTest  ,
DeleteNodeNullptrThrows   
)

◆ TEST_F() [14/47]

TEST_F ( FibonacciHeapTest  ,
DeleteNodeSingleElement   
)

◆ TEST_F() [15/47]

TEST_F ( FibonacciHeapTest  ,
DeleteSolitaryRootWithChildren   
)

◆ TEST_F() [16/47]

TEST_F ( FibonacciHeapTest  ,
DeleteSolitaryRootWithChildrenDirect   
)

◆ TEST_F() [17/47]

TEST_F ( FibonacciHeapTest  ,
EmplaceConstruction   
)

◆ TEST_F() [18/47]

TEST_F ( FibonacciHeapTest  ,
ExtractMinMaintainsSortedOrder   
)

◆ TEST_F() [19/47]

TEST_F ( FibonacciHeapTest  ,
ExtractMinMultipleElements   
)

◆ TEST_F() [20/47]

TEST_F ( FibonacciHeapTest  ,
ExtractMinOnEmptyHeapThrows   
)

◆ TEST_F() [21/47]

TEST_F ( FibonacciHeapTest  ,
ExtractMinSingleElement   
)

◆ TEST_F() [22/47]

TEST_F ( FibonacciHeapTest  ,
ExtractMinWithDuplicates   
)

◆ TEST_F() [23/47]

TEST_F ( FibonacciHeapTest  ,
GetMinAfterInserts   
)

◆ TEST_F() [24/47]

TEST_F ( FibonacciHeapTest  ,
GetMinNodeOnEmptyHeap   
)

◆ TEST_F() [25/47]

TEST_F ( FibonacciHeapTest  ,
GetMinOnEmptyHeapThrows   
)

◆ TEST_F() [26/47]

TEST_F ( FibonacciHeapTest  ,
InsertAscendingOrder   
)

◆ TEST_F() [27/47]

TEST_F ( FibonacciHeapTest  ,
InsertDescendingOrder   
)

◆ TEST_F() [28/47]

TEST_F ( FibonacciHeapTest  ,
InsertDuplicates   
)

◆ TEST_F() [29/47]

TEST_F ( FibonacciHeapTest  ,
InsertMultipleElements   
)

◆ TEST_F() [30/47]

TEST_F ( FibonacciHeapTest  ,
InsertSingleElement   
)

◆ TEST_F() [31/47]

TEST_F ( FibonacciHeapTest  ,
InsertWithMoveSemantics   
)

◆ TEST_F() [32/47]

◆ TEST_F() [33/47]

TEST_F ( FibonacciHeapTest  ,
MergeEmptyIntoNonEmpty   
)

◆ TEST_F() [34/47]

TEST_F ( FibonacciHeapTest  ,
MergeIntoEmptyHeap   
)

◆ TEST_F() [35/47]

◆ TEST_F() [36/47]

TEST_F ( FibonacciHeapTest  ,
MergeTwoNonEmptyHeaps   
)

◆ TEST_F() [37/47]

◆ TEST_F() [38/47]

◆ TEST_F() [39/47]

◆ TEST_F() [40/47]

TEST_F ( FibonacciHeapTest  ,
SwapWithEmptyHeap   
)

◆ TEST_F() [41/47]

TEST_F ( FibonacciHeapTest  ,
UpdateKeyDecrease   
)

◆ TEST_F() [42/47]

TEST_F ( FibonacciHeapTest  ,
UpdateKeyIncrease   
)

◆ TEST_F() [43/47]

TEST_F ( FibonacciHeapTest  ,
UpdateKeyNullptrThrows   
)

◆ TEST_F() [44/47]

TEST_F ( FibonacciHeapTest  ,
UpdateKeySameValue   
)

◆ TEST_F() [45/47]

TEST_F ( FibonacciHeapWithDataTest  ,
DecreaseKeyNotAffectingMinimum   
)

Definition at line 334 of file fibonacci_heap_test.cc.

References Aleph::blossom_maximum_cardinality_matching(), and nodes.

◆ TEST_F() [46/47]

TEST_F ( FibonacciHeapWithDataTest  ,
DecreaseKeyToNewMinimum   
)

Definition at line 324 of file fibonacci_heap_test.cc.

References Aleph::blossom_maximum_cardinality_matching(), and nodes.

◆ TEST_F() [47/47]

TEST_F ( FibonacciHeapWithDataTest  ,
DecreaseKeyToSameValue   
)

Definition at line 343 of file fibonacci_heap_test.cc.

References Aleph::blossom_maximum_cardinality_matching(), and nodes.

◆ verify_heap_property()

template<typename T , typename Compare >
bool verify_heap_property ( Fibonacci_Heap< T, Compare > &  heap)