MCPcopy Create free account
hub / github.com/catboost/catboost / TestGetSubset

Function TestGetSubset

catboost/libs/data/ut/target_ut.cpp:927–979  ·  view source on GitHub ↗

subsets are fixed: first is always FullSubset, second is always TIndexedSubset {2, 3} TComparisonFunc must accept two TTargetDataProviders and check their equality

Source from the content-addressed store, hash-verified

925 // subsets are fixed: first is always FullSubset, second is always TIndexedSubset<ui32>{2, 3}
926 // TComparisonFunc must accept two TTargetDataProviders and check their equality
927 void TestGetSubset(
928 const TVector<TTargetDataProviderPtr>& targetsVector,
929 const TVector<TTargetDataProviderPtr>& expectedSecondSubsets,
930
931 // nondefault values used for checking TObjectsGroupingSubset with permutations inside group
932 TMaybe<TObjectsGroupingSubset> secondObjectsGroupingSubset = Nothing()
933 ) {
934 TVector<TArraySubsetIndexing<ui32>> subsetVector;
935 TVector<EObjectsOrder> subsetOrdersVector;
936 subsetVector.emplace_back(TFullSubset<ui32>(6));
937 subsetOrdersVector.emplace_back(EObjectsOrder::Ordered);
938 subsetVector.emplace_back(TIndexedSubset<ui32>{2, 3});
939 subsetOrdersVector.emplace_back(EObjectsOrder::Undefined);
940
941 using TExpectedMapIndex = std::pair<size_t, size_t>;
942
943 // (targetVector idx, subsetVector idx) -> expectedResult
944 THashMap<TExpectedMapIndex, TTargetDataProviderPtr> expectedResults;
945
946 for (auto targetVectorIdx : xrange(targetsVector.size())) {
947 expectedResults[TExpectedMapIndex(targetVectorIdx, 0)] = targetsVector[targetVectorIdx];
948 expectedResults[TExpectedMapIndex(targetVectorIdx, 1)] = expectedSecondSubsets[targetVectorIdx];
949 }
950
951 for (auto targetVectorIdx : xrange(targetsVector.size())) {
952 for (auto subsetIdx : xrange(subsetVector.size())) {
953 TObjectsGroupingSubset objectsGroupingSubset =
954 ((subsetIdx == 1) && secondObjectsGroupingSubset) ?
955 std::move(*secondObjectsGroupingSubset)
956 : GetSubset(
957 /* get object grouping from the first element of targetsVector[targetVectorIdx],
958 they all should be equal in all vector elements
959 */
960 targetsVector[targetVectorIdx]->GetObjectsGrouping(),
961 TArraySubsetIndexing<ui32>(subsetVector[subsetIdx]),
962 subsetOrdersVector[subsetIdx]
963 );
964
965 NPar::TLocalExecutor localExecutor;
966 localExecutor.RunAdditionalThreads(2);
967
968 TTargetDataProviderPtr subsetTarget = targetsVector[targetVectorIdx]->GetSubset(
969 objectsGroupingSubset,
970 &localExecutor
971 );
972
973 TTargetDataProviderPtr expectedSubsetTarget =
974 expectedResults[TExpectedMapIndex(targetVectorIdx, subsetIdx)];
975
976 UNIT_ASSERT_EQUAL(*subsetTarget, *expectedSubsetTarget);
977 }
978 }
979 }
980
981
982 Y_UNIT_TEST(MultiTarget_GetSubset) {

Callers 1

Y_UNIT_TESTFunction · 0.70

Calls 9

NothingFunction · 0.85
xrangeFunction · 0.85
GetSubsetFunction · 0.85
RunAdditionalThreadsMethod · 0.80
moveFunction · 0.50
emplace_backMethod · 0.45
sizeMethod · 0.45
GetObjectsGroupingMethod · 0.45
GetSubsetMethod · 0.45

Tested by

no test coverage detected