Refactoring by consolidating block move functionality.
Asserting based on current state data (not hard coded data - namely, block size).
Restoring original state on block move to allow for repeated test runs.
State restoration isn't required for a single test run. However, before determining block size dynamically, each block move method depended on original state.