// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "Containers/UnrealString.h" #include "Containers/Array.h" #include "Templates/Function.h" namespace Harmonix::Testing::Utility { template FString ArrayToString(const TArray& Array, // default string formatter TFunction ValueToString = [](const TType& Value) { return FString::Format(TEXT("{0}"), { Value }); }) { TArray ValueStrings; ValueStrings.Reset(Array.Num()); for (const TType& Value : Array) { ValueStrings.Add(ValueToString(Value)); } return FString::Printf(TEXT("{%s}"), *FString::Join(ValueStrings, TEXT(", "))); }; template bool CheckAll(const TArray& Array0, const TArray& Array1, // default comparator. Assumes types have == operator overload TFunction Comparator = [](const T0& First, const T1& Second) { return First == Second; }) { if (Array0.Num() != Array1.Num()) return false; for (int Idx = 0; Idx < Array0.Num(); ++Idx) { if (!Comparator(Array0[Idx], Array1[Idx])) return false; } return true; } FString ArrayToString(const TArray& Array, int MinFractionalDigits); FString ArrayToString(const TArray& Array, int MinFractionalDigits); bool CheckAll(const TArray& Array0, const TArray& Array1, float Tolerance = UE_SMALL_NUMBER); bool CheckAll(const TArray& Array0, const TArray& Array1, double Tolerance = UE_DOUBLE_SMALL_NUMBER); };