Skip to content

Commit

Permalink
testing:*.h: Support splitting test_items into 'transitions' and 'sam…
Browse files Browse the repository at this point in the history
…ples'
  • Loading branch information
bxparks committed May 6, 2023
1 parent 9432f83 commit 477b531
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 22 deletions.
20 changes: 18 additions & 2 deletions src/ace_time/testing/BasicTransitionTest.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,25 @@ class BasicTransitionTest: public aunit::TestOnce {
BasicZoneProcessor zoneProcessor;
TimeZone tz = TimeZone::forZoneInfo(zoneInfo, &zoneProcessor);

assertNoFatalFailure(checkTestItems(
zoneProcessor, tz, testData->numTransitions, testData->transitions,
dstValidationScope, abbrevValidationScope));
assertNoFatalFailure(checkTestItems(
zoneProcessor, tz, testData->numSamples, testData->samples,
dstValidationScope, abbrevValidationScope));
}

void checkTestItems(
BasicZoneProcessor& zoneProcessor,
TimeZone& tz,
uint16_t numItems,
const ValidationItem* const items,
ValidationScope dstValidationScope,
ValidationScope abbrevValidationScope) {

bool passed = true;
for (uint16_t i = 0; i < testData->numItems; i++) {
const ValidationItem& item = testData->items[i];
for (uint16_t i = 0; i < numItems; i++) {
const ValidationItem& item = items[i];
acetime_t epochSeconds = item.epochSeconds;
ZonedDateTime dt = ZonedDateTime::forEpochSeconds(epochSeconds, tz);

Expand Down
52 changes: 34 additions & 18 deletions src/ace_time/testing/ExtendedTransitionTest.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,41 @@ class ExtendedTransitionTest: public aunit::TestOnce {
ExtendedZoneProcessor zoneProcessor;
TimeZone tz = TimeZone::forZoneInfo(zoneInfo, &zoneProcessor);

assertNoFatalFailure(checkTestItems(
zoneProcessor, tz, testData->numTransitions, testData->transitions,
dstValidationScope, abbrevValidationScope));
assertNoFatalFailure(checkTestItems(
zoneProcessor, tz, testData->numSamples, testData->samples,
dstValidationScope, abbrevValidationScope));

// Assert that the TransitionStorage buffer size is exactly the buffer
// size calculated from zone_processor.py.
if (expectedBufSize) {
zoneProcessor.resetTransitionAllocSize();
// Include (startYear - 1) and (untilYear + 1) because the local year
// may shift slightly when converting from an epochSeconds.
for (
int y = testData->startYear - 1;
y < testData->untilYear + 1;
y++) {
zoneProcessor.initForYear(y);
}
uint8_t observedBufSize = zoneProcessor.getTransitionAllocSize();
assertLessOrEqual(observedBufSize, expectedBufSize);
}
}

void checkTestItems(
ExtendedZoneProcessor& zoneProcessor,
TimeZone& tz,
uint16_t numItems,
const ValidationItem* const items,
ValidationScope dstValidationScope,
ValidationScope abbrevValidationScope) {

bool passed = true;
for (uint16_t i = 0; i < testData->numItems; i++) {
const ValidationItem& item = testData->items[i];
for (uint16_t i = 0; i < numItems; i++) {
const ValidationItem& item = items[i];
acetime_t epochSeconds = item.epochSeconds;
ZonedDateTime dt = ZonedDateTime::forEpochSeconds(epochSeconds, tz);

Expand Down Expand Up @@ -91,22 +123,6 @@ class ExtendedTransitionTest: public aunit::TestOnce {
}
}
assertTrue(passed);

// Assert that the TransitionStorage buffer size is exactly the buffer
// size calculated from zone_processor.py.
if (expectedBufSize) {
zoneProcessor.resetTransitionAllocSize();
// Include (startYear - 1) and (untilYear + 1) because the local year
// may shift slightly when converting from an epochSeconds.
for (
int y = testData->startYear - 1;
y < testData->untilYear + 1;
y++) {
zoneProcessor.initForYear(y);
}
uint8_t observedBufSize = zoneProcessor.getTransitionAllocSize();
assertLessOrEqual(observedBufSize, expectedBufSize);
}
}

void checkComponent(bool& passed, int i, const ValidationItem& item,
Expand Down
6 changes: 4 additions & 2 deletions src/ace_time/testing/ValidationDataType.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,10 @@ struct ValidationData {
int const startYear;
int const untilYear;
int const epochYear;
uint16_t const numItems;
const ValidationItem* const items;
uint16_t const numTransitions;
const ValidationItem* const transitions;
uint16_t const numSamples;
const ValidationItem* const samples;
};

}
Expand Down

0 comments on commit 477b531

Please sign in to comment.