Skip to content

Conversation

@SlavaChepelin
Copy link

@SlavaChepelin SlavaChepelin commented Apr 30, 2025

В моменте дебага последней правки обнаружил, что даже скрытые тесты крайне странно проверяют корректность выполнения операций &= |= ^= для view.

Проблема:

Имея BitSet длины более WORD_SIZE и исполняя операции на view, которые одновременно покрывают несколько WORD, они выполнялись некорректно, чего тестеры (локальный и скрытый) не замечали:
Пример:

// Пусть Word = uint32_t
BitSet bs1("010010110010101110001110101110011"); //строка длины 33
BitSet bs2("010010110010101110001110101110011"); //та же самая строка длины 33
bs1.subview(15) &= bs2.subview(15);  // делаю &= для символов начиная с индекса 15
//bs1 после выполнения операции не должно поменяться, однако мой прошлый код менял битсет на такой:
// 010010110010101110001110101110010 - несовпадение последнего символа

Неверно работающий код расположен тут, он проходит скрытые тесты. (не баньте меня, я уже все иcправил)

Добавил публичные тесты, которые проверяют проблему, описанную выше (на них умирает старый код и их проходит новый)

@dedlocc
Copy link
Member

dedlocc commented Jun 27, 2025

спасибо (мёрджить в этом году не будем, останется на следующий)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants