Skip to content

test_section_size()

Documentation for tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_section_size.py::test_section_size@21fb11c8.

Generate fixtures for these test cases for Osaka with:

fill -v tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_section_size.py::test_section_size --fork Osaka

Test custom_size is auto, more or less then the actual size of the section.

Source code in tests/osaka/eip7692_eof_v1/eip3540_eof_v1/test_section_size.py
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
@pytest.mark.parametrize(
    "section_kind, section_size, exception",
    [
        pytest.param(SectionKind.DATA, SectionSize.NORMAL, None),
        pytest.param(SectionKind.DATA, SectionSize.ZERO, EOFException.INVALID_SECTION_BODIES_SIZE),
        pytest.param(
            SectionKind.DATA, SectionSize.UNDERSIZE, EOFException.INVALID_SECTION_BODIES_SIZE
        ),
        pytest.param(
            SectionKind.DATA, SectionSize.OVERSIZE, EOFException.TOPLEVEL_CONTAINER_TRUNCATED
        ),
        pytest.param(
            SectionKind.DATA, SectionSize.HUGE, EOFException.TOPLEVEL_CONTAINER_TRUNCATED
        ),
        pytest.param(SectionKind.DATA, SectionSize.MAX, EOFException.TOPLEVEL_CONTAINER_TRUNCATED),
        pytest.param(
            SectionKind.CODE, SectionSize.NORMAL, None, marks=pytest.mark.skip(reason="duplicate")
        ),
        pytest.param(SectionKind.CODE, SectionSize.ZERO, EOFException.ZERO_SECTION_SIZE),
        pytest.param(
            SectionKind.CODE, SectionSize.UNDERSIZE, EOFException.INVALID_SECTION_BODIES_SIZE
        ),
        pytest.param(
            SectionKind.CODE, SectionSize.OVERSIZE, EOFException.INVALID_SECTION_BODIES_SIZE
        ),
        pytest.param(SectionKind.CODE, SectionSize.HUGE, EOFException.INVALID_SECTION_BODIES_SIZE),
        pytest.param(SectionKind.CODE, SectionSize.MAX, EOFException.INVALID_SECTION_BODIES_SIZE),
        pytest.param(
            SectionKind.TYPE, SectionSize.NORMAL, None, marks=pytest.mark.skip(reason="duplicate")
        ),
        pytest.param(
            SectionKind.TYPE,
            SectionSize.ZERO,
            [EOFException.ZERO_SECTION_SIZE, EOFException.INVALID_SECTION_BODIES_SIZE],
            id="type_size_zero",
        ),
        pytest.param(
            SectionKind.TYPE, SectionSize.UNDERSIZE, EOFException.INVALID_TYPE_SECTION_SIZE
        ),
        pytest.param(
            SectionKind.TYPE, SectionSize.OVERSIZE, EOFException.INVALID_SECTION_BODIES_SIZE
        ),
        pytest.param(SectionKind.TYPE, SectionSize.HUGE, EOFException.INVALID_SECTION_BODIES_SIZE),
        pytest.param(
            SectionKind.TYPE,
            SectionSize.MAX,
            [EOFException.INVALID_SECTION_BODIES_SIZE, EOFException.INVALID_TYPE_SECTION_SIZE],
            id="type_size_max",
        ),
        pytest.param(
            SectionKind.CONTAINER,
            SectionSize.NORMAL,
            None,
            marks=pytest.mark.skip(reason="duplicate"),
        ),
        pytest.param(SectionKind.CONTAINER, SectionSize.ZERO, EOFException.ZERO_SECTION_SIZE),
        pytest.param(
            SectionKind.CONTAINER, SectionSize.UNDERSIZE, EOFException.INVALID_SECTION_BODIES_SIZE
        ),
        pytest.param(
            SectionKind.CONTAINER, SectionSize.OVERSIZE, EOFException.INVALID_SECTION_BODIES_SIZE
        ),
        pytest.param(
            SectionKind.CONTAINER, SectionSize.HUGE, EOFException.INVALID_SECTION_BODIES_SIZE
        ),
        pytest.param(
            SectionKind.CONTAINER, SectionSize.MAX, EOFException.INVALID_SECTION_BODIES_SIZE
        ),
    ],
)
def test_section_size(
    eof_test: EOFTestFiller,
    section_size: SectionSize,
    section_kind: SectionKind,
    exception: EOFExceptionInstanceOrList,
):
    """Test custom_size is auto, more or less then the actual size of the section."""
    eof_code = Container()

    if section_size != SectionSize.NORMAL and section_kind == SectionKind.TYPE:
        eof_code.sections.append(
            Section(
                kind=SectionKind.TYPE,
                data="0x00800001",
                custom_size=section_size,
            ),
        )

    if section_size != SectionSize.NORMAL and section_kind == SectionKind.CODE:
        eof_code.sections.append(
            Section.Code(
                code=Op.ADDRESS + Op.POP + Op.EOFCREATE[0](0, 0, 0, 0) + Op.STOP,
                custom_size=section_size,
            )
        )
    else:
        eof_code.sections.append(
            Section.Code(
                code=Op.ADDRESS + Op.POP + Op.EOFCREATE[0](0, 0, 0, 0) + Op.STOP,
            )
        )

    if section_size != SectionSize.NORMAL and section_kind == SectionKind.CONTAINER:
        eof_code.sections.append(
            Section.Container(
                container=Container(
                    sections=[
                        Section.Code(Op.RETURNCONTRACT[0](0, 0)),
                        Section.Container(container=Container(sections=[Section.Code(Op.STOP)])),
                    ]
                ),
                custom_size=section_size,
            )
        )
    else:
        eof_code.sections.append(
            Section.Container(
                container=Container(
                    sections=[
                        Section.Code(Op.RETURNCONTRACT[0](0, 0)),
                        Section.Container(container=Container(sections=[Section.Code(Op.STOP)])),
                    ]
                ),
            )
        )

    if section_size != SectionSize.NORMAL and section_kind == SectionKind.DATA:
        eof_code.sections.append(Section.Data("0x00daaa", custom_size=section_size))
    else:
        eof_code.sections.append(Section.Data("0x00aaaa"))
    eof_test(
        container=eof_code,
        expect_exception=exception,
    )

Parametrized Test Cases

The interactive table below is also available as a standalone page.

Test ID (Abbreviated) section_kind section_size exception
...fork_Osaka-eof_test-section_kind_DATA-section_size_NORMAL-exception_None DATA NORMAL None
...fork_Osaka-eof_test-section_kind_DATA-section_size_ZERO-exception_EOFException.INVALID_SECTION_BODIES_SIZE DATA ZERO EOFException.INVALID_SECTION_BODIES_SIZE
...fork_Osaka-eof_test-section_kind_DATA-section_size_UNDERSIZE-exception_EOFException.INVALID_SECTION_BODIES_SIZE DATA UNDERSIZE EOFException.INVALID_SECTION_BODIES_SIZE
...fork_Osaka-eof_test-section_kind_DATA-section_size_OVERSIZE-exception_EOFException.TOPLEVEL_CONTAINER_TRUNCATED DATA OVERSIZE EOFException.TOPLEVEL_CONTAINER_TRUNCATED
...fork_Osaka-eof_test-section_kind_DATA-section_size_HUGE-exception_EOFException.TOPLEVEL_CONTAINER_TRUNCATED DATA HUGE EOFException.TOPLEVEL_CONTAINER_TRUNCATED
...fork_Osaka-eof_test-section_kind_DATA-section_size_MAX-exception_EOFException.TOPLEVEL_CONTAINER_TRUNCATED DATA MAX EOFException.TOPLEVEL_CONTAINER_TRUNCATED
...fork_Osaka-eof_test-section_kind_CODE-section_size_NORMAL-exception_None CODE NORMAL None
...fork_Osaka-eof_test-section_kind_CODE-section_size_ZERO-exception_EOFException.ZERO_SECTION_SIZE CODE ZERO EOFException.ZERO_SECTION_SIZE
...fork_Osaka-eof_test-section_kind_CODE-section_size_UNDERSIZE-exception_EOFException.INVALID_SECTION_BODIES_SIZE CODE UNDERSIZE EOFException.INVALID_SECTION_BODIES_SIZE
...fork_Osaka-eof_test-section_kind_CODE-section_size_OVERSIZE-exception_EOFException.INVALID_SECTION_BODIES_SIZE CODE OVERSIZE EOFException.INVALID_SECTION_BODIES_SIZE
...fork_Osaka-eof_test-section_kind_CODE-section_size_HUGE-exception_EOFException.INVALID_SECTION_BODIES_SIZE CODE HUGE EOFException.INVALID_SECTION_BODIES_SIZE
...fork_Osaka-eof_test-section_kind_CODE-section_size_MAX-exception_EOFException.INVALID_SECTION_BODIES_SIZE CODE MAX EOFException.INVALID_SECTION_BODIES_SIZE
...fork_Osaka-eof_test-section_kind_TYPE-section_size_NORMAL-exception_None TYPE NORMAL None
...fork_Osaka-eof_test-type_size_zero TYPE ZERO [, ]
...fork_Osaka-eof_test-section_kind_TYPE-section_size_UNDERSIZE-exception_EOFException.INVALID_TYPE_SECTION_SIZE TYPE UNDERSIZE EOFException.INVALID_TYPE_SECTION_SIZE
...fork_Osaka-eof_test-section_kind_TYPE-section_size_OVERSIZE-exception_EOFException.INVALID_SECTION_BODIES_SIZE TYPE OVERSIZE EOFException.INVALID_SECTION_BODIES_SIZE
...fork_Osaka-eof_test-section_kind_TYPE-section_size_HUGE-exception_EOFException.INVALID_SECTION_BODIES_SIZE TYPE HUGE EOFException.INVALID_SECTION_BODIES_SIZE
...fork_Osaka-eof_test-type_size_max TYPE MAX [, ]
...fork_Osaka-eof_test-section_kind_CONTAINER-section_size_NORMAL-exception_None CONTAINER NORMAL None
...fork_Osaka-eof_test-section_kind_CONTAINER-section_size_ZERO-exception_EOFException.ZERO_SECTION_SIZE CONTAINER ZERO EOFException.ZERO_SECTION_SIZE
...fork_Osaka-eof_test-section_kind_CONTAINER-section_size_UNDERSIZE-exception_EOFException.INVALID_SECTION_BODIES_SIZE CONTAINER UNDERSIZE EOFException.INVALID_SECTION_BODIES_SIZE
...fork_Osaka-eof_test-section_kind_CONTAINER-section_size_OVERSIZE-exception_EOFException.INVALID_SECTION_BODIES_SIZE CONTAINER OVERSIZE EOFException.INVALID_SECTION_BODIES_SIZE
...fork_Osaka-eof_test-section_kind_CONTAINER-section_size_HUGE-exception_EOFException.INVALID_SECTION_BODIES_SIZE CONTAINER HUGE EOFException.INVALID_SECTION_BODIES_SIZE
...fork_Osaka-eof_test-section_kind_CONTAINER-section_size_MAX-exception_EOFException.INVALID_SECTION_BODIES_SIZE CONTAINER MAX EOFException.INVALID_SECTION_BODIES_SIZE