Skip to content

Latest commit

 

History

History
637 lines (634 loc) · 64.3 KB

File metadata and controls

637 lines (634 loc) · 64.3 KB

Spec ↔ Test Trace

자동 생성 — scripts/generate_spec_trace.py. Living.

v0.4.0+ 신규 spec 의 인수조건 ↔ 테스트 매핑. 기존 v0.1.0 ~ v0.3.0 Frozen spec 은 AC ID 부여 안 함 (CONVENTIONS § Trace report).

Spec AC Tests
v0.1.0/rhwp-python tests/test_async.py::test_aparse_document_can_be_used_in_same_thread
v0.1.0/rhwp-python tests/test_async.py::test_aparse_hwpx
v0.1.0/rhwp-python tests/test_async.py::test_aparse_ir_shares_cache
v0.1.0/rhwp-python tests/test_async.py::test_aparse_no_external_dependency
v0.1.0/rhwp-python tests/test_async.py::test_aparse_raises_file_not_found_for_missing_path
v0.1.0/rhwp-python tests/test_async.py::test_aparse_result_equivalent_to_parse
v0.1.0/rhwp-python tests/test_async.py::test_aparse_returns_document_instance
v0.1.0/rhwp-python tests/test_async.py::test_aparse_source_uri_matches_arg
v0.1.0/rhwp-python tests/test_errors.py::TestFileNotFound::test_constructor_raises_file_not_found
v0.1.0/rhwp-python tests/test_errors.py::TestFileNotFound::test_parse_raises_file_not_found
v0.1.0/rhwp-python tests/test_errors.py::TestInvalidFormat::test_constructor_empty_file
v0.1.0/rhwp-python tests/test_errors.py::TestInvalidFormat::test_empty_file_raises_valueerror
v0.1.0/rhwp-python tests/test_errors.py::TestInvalidFormat::test_garbage_bytes_raises_valueerror
v0.1.0/rhwp-python tests/test_from_bytes.py::test_from_bytes_equivalent_to_parse
v0.1.0/rhwp-python tests/test_from_bytes.py::test_from_bytes_hwpx
v0.1.0/rhwp-python tests/test_from_bytes.py::test_from_bytes_invalid_data_raises
v0.1.0/rhwp-python tests/test_from_bytes.py::test_from_bytes_ir_equivalent_to_parse
v0.1.0/rhwp-python tests/test_from_bytes.py::test_from_bytes_returns_document
v0.1.0/rhwp-python tests/test_from_bytes.py::test_from_bytes_with_source_uri
v0.1.0/rhwp-python tests/test_parse.py::TestGetters::test_page_count_type
v0.1.0/rhwp-python tests/test_parse.py::TestGetters::test_paragraph_count_type
v0.1.0/rhwp-python tests/test_parse.py::TestGetters::test_section_count_type
v0.1.0/rhwp-python tests/test_parse.py::TestParsing::test_parse_hwp5
v0.1.0/rhwp-python tests/test_parse.py::TestParsing::test_parse_hwpx
v0.1.0/rhwp-python tests/test_parse.py::TestParsing::test_parse_is_alias_of_constructor
v0.1.0/rhwp-python tests/test_parse.py::TestParsing::test_returns_document_instance
v0.1.0/rhwp-python tests/test_parse.py::TestRepr::test_repr_contains_counts
v0.1.0/rhwp-python tests/test_parse.py::TestRepr::test_repr_format
v0.1.0/rhwp-python tests/test_pdf_rendering.py::TestExportPdf::test_pdf_signature_in_file
v0.1.0/rhwp-python tests/test_pdf_rendering.py::TestExportPdf::test_returns_size_as_int
v0.1.0/rhwp-python tests/test_pdf_rendering.py::TestExportPdf::test_writes_file
v0.1.0/rhwp-python tests/test_pdf_rendering.py::TestRenderPdf::test_pdf_signature
v0.1.0/rhwp-python tests/test_pdf_rendering.py::TestRenderPdf::test_returns_bytes
v0.1.0/rhwp-python tests/test_smoke.py::test_all_exports_available
v0.1.0/rhwp-python tests/test_smoke.py::test_native_module_path
v0.1.0/rhwp-python tests/test_smoke.py::test_pyi_and_py_all_match
v0.1.0/rhwp-python tests/test_smoke.py::test_rhwp_core_version_matches_semver
v0.1.0/rhwp-python tests/test_smoke.py::test_rhwp_core_version_returns_string
v0.1.0/rhwp-python tests/test_smoke.py::test_version_is_package_version
v0.1.0/rhwp-python tests/test_smoke.py::test_version_matches_semver
v0.1.0/rhwp-python tests/test_smoke.py::test_version_returns_string
v0.1.0/rhwp-python tests/test_svg_rendering.py::TestExportSvg::test_creates_output_dir
v0.1.0/rhwp-python tests/test_svg_rendering.py::TestExportSvg::test_default_prefix_is_page
v0.1.0/rhwp-python tests/test_svg_rendering.py::TestExportSvg::test_multipage_uses_numbering
v0.1.0/rhwp-python tests/test_svg_rendering.py::TestExportSvg::test_writes_files
v0.1.0/rhwp-python tests/test_svg_rendering.py::TestRenderAllSvg::test_all_start_with_svg_tag
v0.1.0/rhwp-python tests/test_svg_rendering.py::TestRenderAllSvg::test_count_matches_page_count
v0.1.0/rhwp-python tests/test_svg_rendering.py::TestRenderAllSvg::test_returns_list_of_str
v0.1.0/rhwp-python tests/test_svg_rendering.py::TestRenderSvg::test_out_of_range_raises_valueerror
v0.1.0/rhwp-python tests/test_svg_rendering.py::TestRenderSvg::test_render_single_page
v0.1.0/rhwp-python tests/test_text_extraction.py::TestExtractText::test_contains_korean
v0.1.0/rhwp-python tests/test_text_extraction.py::TestExtractText::test_hwpx_extract_text
v0.1.0/rhwp-python tests/test_text_extraction.py::TestExtractText::test_returns_string
v0.1.0/rhwp-python tests/test_text_extraction.py::TestExtractTextConsistency::test_extract_text_equals_join_nonempty_paragraphs
v0.1.0/rhwp-python tests/test_text_extraction.py::TestParagraphs::test_hwpx_paragraphs
v0.1.0/rhwp-python tests/test_text_extraction.py::TestParagraphs::test_length_matches_paragraph_count
v0.1.0/rhwp-python tests/test_text_extraction.py::TestParagraphs::test_returns_list_of_str
v0.2.0/ir tests/test_ir_iter_blocks.py::test_iter_blocks_all_scope_body_first_then_furniture
v0.2.0/ir tests/test_ir_iter_blocks.py::test_iter_blocks_body_recurse_enters_table_cells
v0.2.0/ir tests/test_ir_iter_blocks.py::test_iter_blocks_default_equals_body
v0.2.0/ir tests/test_ir_iter_blocks.py::test_iter_blocks_furniture_order_is_headers_footers_footnotes
v0.2.0/ir tests/test_ir_iter_blocks.py::test_iter_blocks_furniture_yields_consistent_with_lists
v0.2.0/ir tests/test_ir_iter_blocks.py::test_iter_blocks_handles_three_level_nesting
v0.2.0/ir tests/test_ir_iter_blocks.py::test_iter_blocks_recurse_false_matches_body_len
v0.2.0/ir tests/test_ir_iter_blocks.py::test_iter_blocks_recurse_false_skips_nested_blocks
v0.2.0/ir tests/test_ir_iter_blocks.py::test_iter_blocks_recurse_visits_nested_table_cells
v0.2.0/ir tests/test_ir_iter_blocks.py::test_iter_blocks_recurse_yields_more_on_real_sample
v0.2.0/ir tests/test_ir_iter_blocks.py::test_iter_blocks_yields_only_known_block_types
v0.2.0/ir tests/test_ir_mapper.py::test_build_inline_runs_all_zero_width_from_zero_triggers_fallback
v0.2.0/ir tests/test_ir_mapper.py::test_build_inline_runs_empty_char_runs_fallback
v0.2.0/ir tests/test_ir_mapper.py::test_build_inline_runs_empty_text_returns_empty
v0.2.0/ir tests/test_ir_mapper.py::test_build_inline_runs_prepends_prefix_when_first_run_not_at_zero
v0.2.0/ir tests/test_ir_mapper.py::test_build_inline_runs_preserves_prefix_when_rest_zero_width
v0.2.0/ir tests/test_ir_mapper.py::test_cell_role_header
v0.2.0/ir tests/test_ir_mapper.py::test_cell_role_merged_empty_is_layout
v0.2.0/ir tests/test_ir_mapper.py::test_cell_role_merged_nonempty_is_data
v0.2.0/ir tests/test_ir_mapper.py::test_cell_role_merged_whitespace_only_is_layout
v0.2.0/ir tests/test_ir_mapper.py::test_cell_role_unmerged_empty_is_data
v0.2.0/ir tests/test_ir_mapper.py::test_cell_role_unmerged_is_data
v0.2.0/ir tests/test_ir_mapper.py::test_escape_html_all_special_chars
v0.2.0/ir tests/test_ir_mapper.py::test_escape_html_ampersand_first
v0.2.0/ir tests/test_ir_mapper.py::test_escape_html_does_not_escape_apostrophe
v0.2.0/ir tests/test_ir_mapper.py::test_escape_html_preserves_non_ascii
v0.2.0/ir tests/test_ir_mapper.py::test_escape_html_quote
v0.2.0/ir tests/test_ir_mapper.py::test_table_to_html_escapes_cell_text
v0.2.0/ir tests/test_ir_mapper.py::test_table_to_html_header_uses_th
v0.2.0/ir tests/test_ir_mapper.py::test_table_to_html_rowspan_before_colspan
v0.2.0/ir tests/test_ir_mapper.py::test_table_to_html_span_one_omits_attribute
v0.2.0/ir tests/test_ir_plain_text.py::test_field_with_cached_value
v0.2.0/ir tests/test_ir_plain_text.py::test_field_without_cached_value_returns_none
v0.2.0/ir tests/test_ir_plain_text.py::test_formula_empty_returns_none
v0.2.0/ir tests/test_ir_plain_text.py::test_formula_falls_back_to_script
v0.2.0/ir tests/test_ir_plain_text.py::test_formula_prefers_text_alt
v0.2.0/ir tests/test_ir_plain_text.py::test_join_caption_blocks_works_via_attribute
v0.2.0/ir tests/test_ir_plain_text.py::test_join_empty_list
v0.2.0/ir tests/test_ir_plain_text.py::test_join_includes_list_item_in_caption_or_footnote
v0.2.0/ir tests/test_ir_plain_text.py::test_join_mixes_paragraph_listitem_formula_field
v0.2.0/ir tests/test_ir_plain_text.py::test_join_skips_blocks_with_no_inline_text
v0.2.0/ir tests/test_ir_plain_text.py::test_list_item_empty_text_with_marker_returns_marker
v0.2.0/ir tests/test_ir_plain_text.py::test_list_item_fully_empty_returns_none
v0.2.0/ir tests/test_ir_plain_text.py::test_list_item_includes_marker
v0.2.0/ir tests/test_ir_plain_text.py::test_paragraph_empty_returns_none
v0.2.0/ir tests/test_ir_plain_text.py::test_paragraph_with_text
v0.2.0/ir tests/test_ir_plain_text.py::test_structural_blocks_return_none
v0.2.0/ir tests/test_ir_plain_text.py::test_unknown_block_returns_none
v0.2.0/ir tests/test_ir_roundtrip.py::test_body_contains_only_known_block_kinds
v0.2.0/ir tests/test_ir_roundtrip.py::test_document_source_is_frozen
v0.2.0/ir tests/test_ir_roundtrip.py::test_document_source_uri_property
v0.2.0/ir tests/test_ir_roundtrip.py::test_furniture_lists_have_correct_types
v0.2.0/ir tests/test_ir_roundtrip.py::test_hwp_document_direct_construction_allows_null_source
v0.2.0/ir tests/test_ir_roundtrip.py::test_hwp_document_json_null_source_roundtrip
v0.2.0/ir tests/test_ir_roundtrip.py::test_inline_run_has_styled_runs
v0.2.0/ir tests/test_ir_roundtrip.py::test_inline_run_text_concatenates_to_paragraph_text
v0.2.0/ir tests/test_ir_roundtrip.py::test_ir_body_text_joined_matches_extract_text
v0.2.0/ir tests/test_ir_roundtrip.py::test_ir_is_frozen
v0.2.0/ir tests/test_ir_roundtrip.py::test_ir_section_count_matches_document
v0.2.0/ir tests/test_ir_roundtrip.py::test_metadata_fields_are_none
v0.2.0/ir tests/test_ir_roundtrip.py::test_paragraph_block_count_matches
v0.2.0/ir tests/test_ir_roundtrip.py::test_provenance_char_end_matches_text_length
v0.2.0/ir tests/test_ir_roundtrip.py::test_provenance_monotonic
v0.2.0/ir tests/test_ir_roundtrip.py::test_source_uri_matches_parse_path
v0.2.0/ir tests/test_ir_roundtrip.py::test_source_uri_matches_parse_path_hwpx
v0.2.0/ir tests/test_ir_roundtrip.py::test_to_ir_caches_same_object
v0.2.0/ir tests/test_ir_roundtrip.py::test_to_ir_json_indent_option
v0.2.0/ir tests/test_ir_roundtrip.py::test_to_ir_json_parses_back
v0.2.0/ir tests/test_ir_roundtrip.py::test_to_ir_on_hwpx_sample
v0.2.0/ir tests/test_ir_roundtrip.py::test_to_ir_returns_hwp_document
v0.2.0/ir tests/test_ir_schema.py::test_discriminator_routes_known_kinds
v0.2.0/ir tests/test_ir_schema.py::test_discriminator_routes_unknown_kind
v0.2.0/ir tests/test_ir_schema.py::test_extra_forbid_raises_on_unknown_field
v0.2.0/ir tests/test_ir_schema.py::test_frozen_raises_on_mutation
v0.2.0/ir tests/test_ir_schema.py::test_frozen_unknown_block_cannot_be_mutated
v0.2.0/ir tests/test_ir_schema.py::test_hwp_document_roundtrip
v0.2.0/ir tests/test_ir_schema.py::test_inline_run_defaults
v0.2.0/ir tests/test_ir_schema.py::test_paragraph_block_roundtrip
v0.2.0/ir tests/test_ir_schema.py::test_provenance_char_offsets_are_codepoint_based
v0.2.0/ir tests/test_ir_schema.py::test_schema_version_accepts_valid
v0.2.0/ir tests/test_ir_schema.py::test_schema_version_minor_bump_does_not_warn
v0.2.0/ir tests/test_ir_schema.py::test_schema_version_rejects_invalid
v0.2.0/ir tests/test_ir_schema.py::test_schema_version_warns_on_future_major
v0.2.0/ir tests/test_ir_schema.py::test_table_block_simple_roundtrip
v0.2.0/ir tests/test_ir_schema.py::test_table_nested_three_levels
v0.2.0/ir tests/test_ir_schema.py::test_unknown_block_preserves_arbitrary_kind
v0.2.0/ir tests/test_ir_schema_export.py::test_export_schema_defs_are_exactly_the_known_nodes
v0.2.0/ir tests/test_ir_schema_export.py::test_export_schema_has_id_and_dialect
v0.2.0/ir tests/test_ir_schema_export.py::test_export_schema_known_blocks_forbid_additional
v0.2.0/ir tests/test_ir_schema_export.py::test_export_schema_no_numeric_range_keywords
v0.2.0/ir tests/test_ir_schema_export.py::test_export_schema_passes_meta_validation
v0.2.0/ir tests/test_ir_schema_export.py::test_export_schema_root_additional_properties_false
v0.2.0/ir tests/test_ir_schema_export.py::test_invalid_kind_fails_schema_validation
v0.2.0/ir tests/test_ir_schema_export.py::test_load_schema_is_valid_draft_2020_12
v0.2.0/ir tests/test_ir_schema_export.py::test_load_schema_matches_export_schema
v0.2.0/ir tests/test_ir_schema_export.py::test_load_schema_raises_file_not_found_when_packaged_json_missing
v0.2.0/ir tests/test_ir_schema_export.py::test_minimal_hwp_document_validates
v0.2.0/ir tests/test_ir_schema_export.py::test_paragraph_block_with_inlines_validates
v0.2.0/ir tests/test_ir_schema_export.py::test_real_hwp_document_validates_against_schema
v0.2.0/ir tests/test_ir_schema_export.py::test_schema_id_has_immutable_v1_path
v0.2.0/ir tests/test_ir_schema_export.py::test_unknown_kind_routing_pydantic_matches_schema
v0.2.0/ir tests/test_ir_tables.py::test_hwp5_sample_tables_follow_contract
v0.2.0/ir tests/test_ir_tables.py::test_hwpx_sample_has_tables
v0.2.0/ir tests/test_ir_tables.py::test_layout_role_on_merged_empty_cells
v0.2.0/ir tests/test_ir_tables.py::test_nested_tables_are_block_compatible
v0.2.0/ir tests/test_ir_tables.py::test_table_block_fields_populated
v0.2.0/ir tests/test_ir_tables.py::test_table_block_shares_provenance_with_paragraph
v0.2.0/ir tests/test_ir_tables.py::test_table_block_survives_json_roundtrip
v0.2.0/ir tests/test_ir_tables.py::test_table_cells_blocks_are_paragraph_or_table
v0.2.0/ir tests/test_ir_tables.py::test_table_cells_have_valid_coordinates
v0.2.0/ir tests/test_ir_tables.py::test_table_html_tr_td_structure
v0.2.0/ir tests/test_ir_tables.py::test_table_text_row_and_cell_separators
v0.2.0/ir tests/test_langchain_loader.py::TestConstruction::test_default_mode_is_single
v0.2.0/ir tests/test_langchain_loader.py::TestConstruction::test_explicit_paragraph_mode
v0.2.0/ir tests/test_langchain_loader.py::TestConstruction::test_explicit_single_mode
v0.2.0/ir tests/test_langchain_loader.py::TestConstruction::test_invalid_mode_empty_string
v0.2.0/ir tests/test_langchain_loader.py::TestConstruction::test_invalid_mode_raises
v0.2.0/ir tests/test_langchain_loader.py::TestErrors::test_file_not_found
v0.2.0/ir tests/test_langchain_loader.py::TestErrors::test_invalid_format
v0.2.0/ir tests/test_langchain_loader.py::TestHwpxFormat::test_paragraph_mode_works
v0.2.0/ir tests/test_langchain_loader.py::TestHwpxFormat::test_single_mode_works
v0.2.0/ir tests/test_langchain_loader.py::TestLazyLoad::test_returns_iterator
v0.2.0/ir tests/test_langchain_loader.py::TestLazyLoad::test_yields_same_content
v0.2.0/ir tests/test_langchain_loader.py::TestLazyLoad::test_yields_same_count_as_load
v0.2.0/ir tests/test_langchain_loader.py::TestParagraphMode::test_base_metadata_shared_across_docs
v0.2.0/ir tests/test_langchain_loader.py::TestParagraphMode::test_count_matches_non_empty_paragraphs
v0.2.0/ir tests/test_langchain_loader.py::TestParagraphMode::test_each_doc_has_paragraph_index
v0.2.0/ir tests/test_langchain_loader.py::TestParagraphMode::test_no_empty_paragraphs
v0.2.0/ir tests/test_langchain_loader.py::TestParagraphMode::test_paragraph_indices_are_ascending
v0.2.0/ir tests/test_langchain_loader.py::TestParagraphMode::test_paragraph_indices_are_from_original_list
v0.2.0/ir tests/test_langchain_loader.py::TestParagraphMode::test_returns_list_of_documents
v0.2.0/ir tests/test_langchain_loader.py::TestSingleMode::test_metadata_counts_match_rhwp
v0.2.0/ir tests/test_langchain_loader.py::TestSingleMode::test_metadata_has_required_keys
v0.2.0/ir tests/test_langchain_loader.py::TestSingleMode::test_metadata_no_paragraph_index_in_single_mode
v0.2.0/ir tests/test_langchain_loader.py::TestSingleMode::test_metadata_source_matches_input
v0.2.0/ir tests/test_langchain_loader.py::TestSingleMode::test_page_content_matches_extract_text
v0.2.0/ir tests/test_langchain_loader.py::TestSingleMode::test_returns_list_with_one_document
v0.2.0/ir tests/test_langchain_loader.py::TestTextSplitterIntegration::test_chunk_size_respected
v0.2.0/ir tests/test_langchain_loader.py::TestTextSplitterIntegration::test_metadata_propagates_to_chunks
v0.2.0/ir tests/test_langchain_loader.py::TestTextSplitterIntegration::test_paragraph_mode_chunks_preserve_paragraph_index
v0.2.0/ir tests/test_langchain_loader.py::TestTextSplitterIntegration::test_split_produces_chunks
v0.2.0/ir tests/test_langchain_loader_ir.py::test_caption_with_formula_and_field_includes_them
v0.2.0/ir tests/test_langchain_loader_ir.py::test_footnote_with_list_items_includes_them_in_content
v0.2.0/ir tests/test_langchain_loader_ir.py::test_include_furniture_default_false
v0.2.0/ir tests/test_langchain_loader_ir.py::test_include_furniture_ignored_in_paragraph_mode
v0.2.0/ir tests/test_langchain_loader_ir.py::test_include_furniture_marks_scope_metadata
v0.2.0/ir tests/test_langchain_loader_ir.py::test_include_furniture_yields_extra_documents
v0.2.0/ir tests/test_langchain_loader_ir.py::test_invalid_mode_still_rejects_after_ir_addition
v0.2.0/ir tests/test_langchain_loader_ir.py::test_ir_blocks_includes_both_paragraph_and_table
v0.2.0/ir tests/test_langchain_loader_ir.py::test_ir_blocks_metadata_has_base_fields
v0.2.0/ir tests/test_langchain_loader_ir.py::test_ir_blocks_mode_accepted
v0.2.0/ir tests/test_langchain_loader_ir.py::test_ir_blocks_mode_lazy_load_yields_documents
v0.2.0/ir tests/test_langchain_loader_ir.py::test_ir_blocks_mode_returns_list_of_documents
v0.2.0/ir tests/test_langchain_loader_ir.py::test_ir_blocks_mode_works_on_hwp5_sample
v0.2.0/ir tests/test_langchain_loader_ir.py::test_ir_blocks_paragraph_content_is_text
v0.2.0/ir tests/test_langchain_loader_ir.py::test_ir_blocks_preserves_iter_blocks_order
v0.2.0/ir tests/test_langchain_loader_ir.py::test_ir_blocks_skips_empty_paragraphs
v0.2.0/ir tests/test_langchain_loader_ir.py::test_ir_blocks_table_content_is_html
v0.3.0/cli tests/test_cli.py::test_block_to_text_includes_list_items_in_footnote
v0.3.0/cli tests/test_cli.py::test_blocks_format_json_returns_array
v0.3.0/cli tests/test_cli.py::test_blocks_format_text_outputs_plain_strings
v0.3.0/cli tests/test_cli.py::test_blocks_kind_filter_table
v0.3.0/cli tests/test_cli.py::test_blocks_ndjson_each_line_is_independent_json
v0.3.0/cli tests/test_cli.py::test_blocks_no_recurse_skips_table_cells
v0.3.0/cli tests/test_cli.py::test_blocks_scope_furniture_exits_zero
v0.3.0/cli tests/test_cli.py::test_chunks_include_furniture_yields_more_or_equal
v0.3.0/cli tests/test_cli.py::test_chunks_ir_blocks_mode
v0.3.0/cli tests/test_cli.py::test_chunks_missing_file_exit_1
v0.3.0/cli tests/test_cli.py::test_chunks_missing_text_splitters_exit_2
v0.3.0/cli tests/test_cli.py::test_chunks_paragraph_default
v0.3.0/cli tests/test_cli.py::test_help_lists_all_subcommands
v0.3.0/cli tests/test_cli.py::test_ir_default_compact_single_line
v0.3.0/cli tests/test_cli.py::test_ir_indent_produces_multiline
v0.3.0/cli tests/test_cli.py::test_ir_to_file
v0.3.0/cli tests/test_cli.py::test_parse_missing_file_exit_1
v0.3.0/cli tests/test_cli.py::test_parse_summary_format
v0.3.0/cli tests/test_cli.py::test_schema_stdout_matches_export_schema
v0.3.0/cli tests/test_cli.py::test_schema_to_file_writes_valid_json
v0.3.0/cli tests/test_cli.py::test_version_outputs_match_rhwp_module
v0.3.0/ir-expansion tests/test_ir_caption.py::test_build_caption_block_paragraphs_flattened
v0.3.0/ir-expansion tests/test_ir_caption.py::test_build_caption_block_preserves_known_directions
v0.3.0/ir-expansion tests/test_ir_caption.py::test_build_caption_block_unknown_direction_falls_back_to_bottom
v0.3.0/ir-expansion tests/test_ir_caption.py::test_build_hwp_document_table_with_caption_block_routed
v0.3.0/ir-expansion tests/test_ir_caption.py::test_build_picture_block_caption_none_when_raw_caption_none
v0.3.0/ir-expansion tests/test_ir_caption.py::test_build_picture_block_with_caption_field
v0.3.0/ir-expansion tests/test_ir_caption.py::test_build_picture_preserves_description_alongside_caption
v0.3.0/ir-expansion tests/test_ir_caption.py::test_caption_block_accepts_valid_directions
v0.3.0/ir-expansion tests/test_ir_caption.py::test_caption_block_default_direction_is_bottom
v0.3.0/ir-expansion tests/test_ir_caption.py::test_caption_block_extra_forbidden
v0.3.0/ir-expansion tests/test_ir_caption.py::test_caption_block_frozen
v0.3.0/ir-expansion tests/test_ir_caption.py::test_caption_block_minimal_roundtrip
v0.3.0/ir-expansion tests/test_ir_caption.py::test_caption_block_rejects_unknown_direction
v0.3.0/ir-expansion tests/test_ir_caption.py::test_caption_block_routes_via_discriminator_in_body
v0.3.0/ir-expansion tests/test_ir_caption.py::test_iter_blocks_recurse_does_not_enter_picture_caption
v0.3.0/ir-expansion tests/test_ir_caption.py::test_iter_blocks_recurse_does_not_enter_table_caption_block
v0.3.0/ir-expansion tests/test_ir_caption.py::test_iter_blocks_recurse_enters_caption_inside_table_cell
v0.3.0/ir-expansion tests/test_ir_caption.py::test_iter_blocks_recurse_enters_standalone_caption_in_body
v0.3.0/ir-expansion tests/test_ir_caption.py::test_picture_block_caption_field_default_none
v0.3.0/ir-expansion tests/test_ir_caption.py::test_picture_block_caption_roundtrip
v0.3.0/ir-expansion tests/test_ir_caption.py::test_table_block_caption_block_field_default_none
v0.3.0/ir-expansion tests/test_ir_caption.py::test_table_block_caption_str_and_caption_block_coexist
v0.3.0/ir-expansion tests/test_ir_caption.py::test_table_block_caption_str_only_v0_2_0_pattern
v0.3.0/ir-expansion tests/test_ir_field.py::test_build_field_block_known_kind_passes_through
v0.3.0/ir-expansion tests/test_ir_field.py::test_build_field_block_preserves_provenance
v0.3.0/ir-expansion tests/test_ir_field.py::test_build_field_block_preserves_raw_instruction
v0.3.0/ir-expansion tests/test_ir_field.py::test_build_field_block_unknown_kind_falls_back_to_unknown
v0.3.0/ir-expansion tests/test_ir_field.py::test_field_block_accepts_all_known_kinds
v0.3.0/ir-expansion tests/test_ir_field.py::test_field_block_calc_distinguishes_from_formula_block
v0.3.0/ir-expansion tests/test_ir_field.py::test_field_block_default_field_kind_is_unknown
v0.3.0/ir-expansion tests/test_ir_field.py::test_field_block_extra_forbidden
v0.3.0/ir-expansion tests/test_ir_field.py::test_field_block_frozen
v0.3.0/ir-expansion tests/test_ir_field.py::test_field_block_full_roundtrip
v0.3.0/ir-expansion tests/test_ir_field.py::test_field_block_minimal_roundtrip
v0.3.0/ir-expansion tests/test_ir_field.py::test_field_block_rejects_invalid_field_kind
v0.3.0/ir-expansion tests/test_ir_field.py::test_field_block_routes_via_discriminator
v0.3.0/ir-expansion tests/test_ir_field.py::test_field_block_with_toc_kind_is_user_constructible_only
v0.3.0/ir-expansion tests/test_ir_field.py::test_field_kind_literal_has_15_values
v0.3.0/ir-expansion tests/test_ir_field.py::test_flatten_paragraph_multiple_fields_in_order
v0.3.0/ir-expansion tests/test_ir_field.py::test_flatten_paragraph_yields_field_block_when_fields_present
v0.3.0/ir-expansion tests/test_ir_field.py::test_valid_field_kinds_set_matches_literal
v0.3.0/ir-expansion tests/test_ir_footnote.py::test_build_endnote_block_mirrors_footnote_pattern
v0.3.0/ir-expansion tests/test_ir_footnote.py::test_build_footnote_block_flattens_inner_paragraphs
v0.3.0/ir-expansion tests/test_ir_footnote.py::test_build_footnote_block_preserves_number_and_marker
v0.3.0/ir-expansion tests/test_ir_footnote.py::test_build_hwp_document_routes_endnotes_to_furniture
v0.3.0/ir-expansion tests/test_ir_footnote.py::test_build_hwp_document_routes_footnotes_to_furniture
v0.3.0/ir-expansion tests/test_ir_footnote.py::test_endnote_block_minimal_roundtrip
v0.3.0/ir-expansion tests/test_ir_footnote.py::test_footnote_block_blocks_supports_recursion_with_table
v0.3.0/ir-expansion tests/test_ir_footnote.py::test_footnote_block_extra_forbidden
v0.3.0/ir-expansion tests/test_ir_footnote.py::test_footnote_block_frozen
v0.3.0/ir-expansion tests/test_ir_footnote.py::test_footnote_block_marker_and_prov_separately_assignable
v0.3.0/ir-expansion tests/test_ir_footnote.py::test_footnote_block_minimal_roundtrip
v0.3.0/ir-expansion tests/test_ir_footnote.py::test_footnote_block_routes_via_discriminator
v0.3.0/ir-expansion tests/test_ir_footnote.py::test_footnote_block_separate_from_endnote_block
v0.3.0/ir-expansion tests/test_ir_footnote.py::test_footnotes_endnotes_never_appear_in_body
v0.3.0/ir-expansion tests/test_ir_footnote.py::test_iter_blocks_furniture_order_includes_footnotes_endnotes
v0.3.0/ir-expansion tests/test_ir_footnote.py::test_iter_blocks_recurse_enters_endnote_blocks
v0.3.0/ir-expansion tests/test_ir_footnote.py::test_iter_blocks_recurse_enters_footnote_blocks
v0.3.0/ir-expansion tests/test_ir_footnote.py::test_real_sample_endnotes_exposed_in_furniture
v0.3.0/ir-expansion tests/test_ir_footnote.py::test_real_sample_footnotes_exposed_in_furniture
v0.3.0/ir-expansion tests/test_ir_formula.py::test_build_formula_block_preserves_script_and_prov
v0.3.0/ir-expansion tests/test_ir_formula.py::test_build_formula_block_preserves_text_alt
v0.3.0/ir-expansion tests/test_ir_formula.py::test_build_formula_block_preserves_text_alt_verbatim
v0.3.0/ir-expansion tests/test_ir_formula.py::test_build_formula_block_text_alt_can_be_none
v0.3.0/ir-expansion tests/test_ir_formula.py::test_formula_block_accepts_known_script_kinds
v0.3.0/ir-expansion tests/test_ir_formula.py::test_formula_block_extra_forbidden
v0.3.0/ir-expansion tests/test_ir_formula.py::test_formula_block_frozen
v0.3.0/ir-expansion tests/test_ir_formula.py::test_formula_block_full_roundtrip
v0.3.0/ir-expansion tests/test_ir_formula.py::test_formula_block_kind_is_formula
v0.3.0/ir-expansion tests/test_ir_formula.py::test_formula_block_minimal_roundtrip
v0.3.0/ir-expansion tests/test_ir_formula.py::test_formula_block_model_copy_pattern_for_external_latex_conversion
v0.3.0/ir-expansion tests/test_ir_formula.py::test_formula_block_rejects_unknown_script_kind
v0.3.0/ir-expansion tests/test_ir_formula.py::test_formula_block_routes_via_discriminator
v0.3.0/ir-expansion tests/test_ir_formula.py::test_formula_inside_footnote_body_is_flattened
v0.3.0/ir-expansion tests/test_ir_formula.py::test_formula_inside_table_cell_is_flattened
v0.3.0/ir-expansion tests/test_ir_formula.py::test_real_sample_formulas_have_required_fields
v0.3.0/ir-expansion tests/test_ir_furniture.py::test_build_hwp_document_footnotes_empty_when_raw_empty
v0.3.0/ir-expansion tests/test_ir_furniture.py::test_build_hwp_document_furniture_paragraphs_share_section_idx
v0.3.0/ir-expansion tests/test_ir_furniture.py::test_build_hwp_document_header_with_table_flattens_to_furniture
v0.3.0/ir-expansion tests/test_ir_furniture.py::test_build_hwp_document_preserves_header_footer_order
v0.3.0/ir-expansion tests/test_ir_furniture.py::test_build_hwp_document_routes_footers_to_furniture
v0.3.0/ir-expansion tests/test_ir_furniture.py::test_build_hwp_document_routes_headers_to_furniture
v0.3.0/ir-expansion tests/test_ir_furniture.py::test_furniture_accepts_endnotes_field_in_s2
v0.3.0/ir-expansion tests/test_ir_furniture.py::test_furniture_default_lists_are_empty
v0.3.0/ir-expansion tests/test_ir_furniture.py::test_furniture_extra_forbidden
v0.3.0/ir-expansion tests/test_ir_furniture.py::test_furniture_frozen_blocks_mutation
v0.3.0/ir-expansion tests/test_ir_furniture.py::test_iter_blocks_all_then_furniture_order
v0.3.0/ir-expansion tests/test_ir_furniture.py::test_iter_blocks_furniture_recurse_enters_header_table_cells
v0.3.0/ir-expansion tests/test_ir_furniture.py::test_real_sample_body_excludes_header_footer_text
v0.3.0/ir-expansion tests/test_ir_furniture.py::test_real_sample_furniture_yields_paragraph_blocks
v0.3.0/ir-expansion tests/test_ir_furniture.py::test_real_sample_iter_blocks_furniture_matches_lists
v0.3.0/ir-expansion tests/test_ir_list.py::test_build_list_item_inlines_match_paragraph_pattern
v0.3.0/ir-expansion tests/test_ir_list.py::test_build_list_item_marker_placeholder_by_head_type
v0.3.0/ir-expansion tests/test_ir_list.py::test_build_list_item_preserves_provenance
v0.3.0/ir-expansion tests/test_ir_list.py::test_build_list_item_raises_when_list_info_none
v0.3.0/ir-expansion tests/test_ir_list.py::test_build_list_item_unknown_head_type_falls_back
v0.3.0/ir-expansion tests/test_ir_list.py::test_list_item_block_default_fields
v0.3.0/ir-expansion tests/test_ir_list.py::test_list_item_block_extra_forbidden
v0.3.0/ir-expansion tests/test_ir_list.py::test_list_item_block_frozen
v0.3.0/ir-expansion tests/test_ir_list.py::test_list_item_block_minimal_roundtrip
v0.3.0/ir-expansion tests/test_ir_list.py::test_list_item_block_routes_via_discriminator
v0.3.0/ir-expansion tests/test_ir_list.py::test_list_item_blocks_can_appear_in_table_cell
v0.3.0/ir-expansion tests/test_ir_list.py::test_marker_is_placeholder_in_v0_3_0
v0.3.0/ir-expansion tests/test_ir_list.py::test_paragraph_with_list_info_yields_list_item_block
v0.3.0/ir-expansion tests/test_ir_list.py::test_paragraph_without_list_info_yields_paragraph_block
v0.3.0/ir-expansion tests/test_ir_picture.py::test_build_picture_block_broken_reference_routes_to_none
v0.3.0/ir-expansion tests/test_ir_picture.py::test_build_picture_block_no_extension_falls_back
v0.3.0/ir-expansion tests/test_ir_picture.py::test_build_picture_block_preserves_description
v0.3.0/ir-expansion tests/test_ir_picture.py::test_build_picture_block_unknown_extension_falls_back
v0.3.0/ir-expansion tests/test_ir_picture.py::test_build_picture_block_with_known_extension
v0.3.0/ir-expansion tests/test_ir_picture.py::test_bytes_for_image_raises_on_broken_reference
v0.3.0/ir-expansion tests/test_ir_picture.py::test_bytes_for_image_raises_on_invalid_uri
v0.3.0/ir-expansion tests/test_ir_picture.py::test_bytes_for_image_raises_on_lookup_miss
v0.3.0/ir-expansion tests/test_ir_picture.py::test_bytes_for_image_raises_on_out_of_range
v0.3.0/ir-expansion tests/test_ir_picture.py::test_bytes_for_image_raises_on_unsupported_scheme
v0.3.0/ir-expansion tests/test_ir_picture.py::test_image_ref_extra_forbidden
v0.3.0/ir-expansion tests/test_ir_picture.py::test_image_ref_frozen
v0.3.0/ir-expansion tests/test_ir_picture.py::test_image_ref_required_fields
v0.3.0/ir-expansion tests/test_ir_picture.py::test_image_ref_roundtrip
v0.3.0/ir-expansion tests/test_ir_picture.py::test_mime_mapping_known_extensions
v0.3.0/ir-expansion tests/test_ir_picture.py::test_mime_mapping_none_falls_back
v0.3.0/ir-expansion tests/test_ir_picture.py::test_mime_mapping_unknown_falls_back
v0.3.0/ir-expansion tests/test_ir_picture.py::test_picture_block_broken_reference
v0.3.0/ir-expansion tests/test_ir_picture.py::test_picture_block_extra_forbidden
v0.3.0/ir-expansion tests/test_ir_picture.py::test_picture_block_kind_is_picture
v0.3.0/ir-expansion tests/test_ir_picture.py::test_picture_block_roundtrip_with_image
v0.3.0/ir-expansion tests/test_ir_picture.py::test_picture_block_routes_via_discriminator
v0.3.0/ir-expansion tests/test_ir_picture.py::test_real_sample_bytes_for_image_returns_nonempty
v0.3.0/ir-expansion tests/test_ir_picture.py::test_real_sample_picture_block_kind_is_picture
v0.3.0/ir-expansion tests/test_ir_picture.py::test_real_sample_picture_uri_is_bin_scheme
v0.3.0/ir-expansion tests/test_ir_toc.py::test_build_toc_block_empty_entries
v0.3.0/ir-expansion tests/test_ir_toc.py::test_build_toc_block_with_entries
v0.3.0/ir-expansion tests/test_ir_toc.py::test_build_toc_entry_is_stale_always_false_v0_3_0
v0.3.0/ir-expansion tests/test_ir_toc.py::test_build_toc_entry_target_section_idx_always_none_v0_3_0
v0.3.0/ir-expansion tests/test_ir_toc.py::test_flatten_paragraph_multiple_tocs
v0.3.0/ir-expansion tests/test_ir_toc.py::test_flatten_paragraph_yields_toc_block_when_tocs_present
v0.3.0/ir-expansion tests/test_ir_toc.py::test_iter_blocks_yields_toc_block_only
v0.3.0/ir-expansion tests/test_ir_toc.py::test_toc_block_extra_forbidden
v0.3.0/ir-expansion tests/test_ir_toc.py::test_toc_block_frozen
v0.3.0/ir-expansion tests/test_ir_toc.py::test_toc_block_minimal_roundtrip
v0.3.0/ir-expansion tests/test_ir_toc.py::test_toc_block_routes_via_discriminator
v0.3.0/ir-expansion tests/test_ir_toc.py::test_toc_block_with_entries_roundtrip
v0.3.0/ir-expansion tests/test_ir_toc.py::test_toc_entry_block_default_values
v0.3.0/ir-expansion tests/test_ir_toc.py::test_toc_entry_block_extra_forbidden
v0.3.0/ir-expansion tests/test_ir_toc.py::test_toc_entry_block_frozen
v0.3.0/ir-expansion tests/test_ir_toc.py::test_toc_entry_block_full_fields
v0.3.0/ir-expansion tests/test_ir_toc.py::test_toc_entry_block_is_not_in_block_union
v0.3.0/ir-expansion tests/test_ir_toc.py::test_toc_entry_block_minimal_roundtrip
v0.3.1/ir-marker-char-offset tests/test_ir_marker_char_offset.py::test_changelog_records_pin_bump
v0.3.1/ir-marker-char-offset tests/test_ir_marker_char_offset.py::test_char_offsets_empty_falls_back_to_none
v0.3.1/ir-marker-char-offset tests/test_ir_marker_char_offset.py::test_endnote_marker_char_offset_populated_zero_width
v0.3.1/ir-marker-char-offset tests/test_ir_marker_char_offset.py::test_field_char_offset_populated_zero_width
v0.3.1/ir-marker-char-offset tests/test_ir_marker_char_offset.py::test_footnote_marker_char_offset_populated_zero_width
v0.3.1/ir-marker-char-offset tests/test_ir_marker_char_offset.py::test_formula_char_offset_populated_zero_width
v0.3.1/ir-marker-char-offset tests/test_ir_marker_char_offset.py::test_no_synthetic_fixture_directory
v0.3.1/ir-marker-char-offset tests/test_ir_marker_char_offset.py::test_picture_char_offset_populated_zero_width
v0.3.1/ir-marker-char-offset tests/test_ir_marker_char_offset.py::test_real_sample_field_marker_populates_or_falls_back
v0.3.1/ir-marker-char-offset tests/test_ir_marker_char_offset.py::test_real_sample_footnote_marker_populates_or_falls_back
v0.3.1/ir-marker-char-offset tests/test_ir_marker_char_offset.py::test_real_sample_has_none_fallback_paragraphs
v0.3.1/ir-marker-char-offset tests/test_ir_marker_char_offset.py::test_real_sample_ir_json_roundtrip
v0.3.1/ir-marker-char-offset tests/test_ir_marker_char_offset.py::test_real_sample_picture_marker_populates_or_falls_back
v0.3.1/ir-marker-char-offset tests/test_ir_marker_char_offset.py::test_real_sample_table_marker_populates_or_falls_back
v0.3.1/ir-marker-char-offset tests/test_ir_marker_char_offset.py::test_real_sample_zero_width_invariant
v0.3.1/ir-marker-char-offset tests/test_ir_marker_char_offset.py::test_rust_uses_assert_eq_not_debug_assert
v0.3.1/ir-marker-char-offset tests/test_ir_marker_char_offset.py::test_schema_provenance_char_start_anyof_integer_or_null
v0.3.1/ir-marker-char-offset tests/test_ir_marker_char_offset.py::test_schema_version_remains_1_1
v0.3.1/ir-marker-char-offset tests/test_ir_marker_char_offset.py::test_table_char_offset_populated_zero_width
v0.3.1/ir-marker-char-offset tests/test_ir_marker_char_offset.py::test_toc_char_offset_populated_zero_width
v0.3.1/ir-marker-char-offset tests/test_ir_marker_char_offset.py::test_zero_width_invariant_holds_across_distinct_offsets
v0.3.1/ir-marker-char-offset AC-1 tests/test_ir_marker_char_offset.py::test_footnote_marker_char_offset_populated_zero_width
v0.3.1/ir-marker-char-offset AC-1 tests/test_ir_marker_char_offset.py::test_real_sample_footnote_marker_populates_or_falls_back
v0.3.1/ir-marker-char-offset AC-10 tests/test_ir_schema_export.py::test_real_hwp_document_validates_against_schema
v0.3.1/ir-marker-char-offset AC-11 tests/test_ir_marker_char_offset.py::test_real_sample_zero_width_invariant
v0.3.1/ir-marker-char-offset AC-11 tests/test_ir_marker_char_offset.py::test_zero_width_invariant_holds_across_distinct_offsets
v0.3.1/ir-marker-char-offset AC-12 tests/test_ir_marker_char_offset.py::test_rust_uses_assert_eq_not_debug_assert
v0.3.1/ir-marker-char-offset AC-13 tests/test_ir_marker_char_offset.py::test_changelog_records_pin_bump
v0.3.1/ir-marker-char-offset AC-14 tests/test_ir_marker_char_offset.py::test_no_synthetic_fixture_directory
v0.3.1/ir-marker-char-offset AC-2 tests/test_ir_marker_char_offset.py::test_endnote_marker_char_offset_populated_zero_width
v0.3.1/ir-marker-char-offset AC-3 tests/test_ir_marker_char_offset.py::test_picture_char_offset_populated_zero_width
v0.3.1/ir-marker-char-offset AC-3 tests/test_ir_marker_char_offset.py::test_real_sample_picture_marker_populates_or_falls_back
v0.3.1/ir-marker-char-offset AC-4 tests/test_ir_marker_char_offset.py::test_formula_char_offset_populated_zero_width
v0.3.1/ir-marker-char-offset AC-5 tests/test_ir_marker_char_offset.py::test_field_char_offset_populated_zero_width
v0.3.1/ir-marker-char-offset AC-5 tests/test_ir_marker_char_offset.py::test_real_sample_field_marker_populates_or_falls_back
v0.3.1/ir-marker-char-offset AC-6 tests/test_ir_marker_char_offset.py::test_toc_char_offset_populated_zero_width
v0.3.1/ir-marker-char-offset AC-7 tests/test_ir_marker_char_offset.py::test_real_sample_table_marker_populates_or_falls_back
v0.3.1/ir-marker-char-offset AC-7 tests/test_ir_marker_char_offset.py::test_table_char_offset_populated_zero_width
v0.3.1/ir-marker-char-offset AC-8 tests/test_ir_marker_char_offset.py::test_char_offsets_empty_falls_back_to_none
v0.3.1/ir-marker-char-offset AC-8 tests/test_ir_marker_char_offset.py::test_real_sample_has_none_fallback_paragraphs
v0.3.1/ir-marker-char-offset AC-9 tests/test_ir_marker_char_offset.py::test_schema_provenance_char_start_anyof_integer_or_null
v0.3.1/ir-marker-char-offset AC-9 tests/test_ir_marker_char_offset.py::test_schema_version_remains_1_1
v0.4.0/view-renderer tests/test_view_baseline.py::test_aift_to_ir_byte_equal_to_v0_3_2_baseline
v0.4.0/view-renderer tests/test_view_baseline.py::test_table_vpos_to_ir_byte_equal_to_v0_3_2_baseline
v0.4.0/view-renderer tests/test_view_html.py::test_alternating_list_kind_creates_separate_lists
v0.4.0/view-renderer tests/test_view_html.py::test_consecutive_list_items_group_into_single_ul
v0.4.0/view-renderer tests/test_view_html.py::test_endnote_uses_separate_id_namespace
v0.4.0/view-renderer tests/test_view_html.py::test_enumerated_list_uses_ol
v0.4.0/view-renderer tests/test_view_html.py::test_footnote_and_endnote_coexist_with_separate_id_namespaces
v0.4.0/view-renderer tests/test_view_html.py::test_footnote_renders_sup_ref_and_aside_def
v0.4.0/view-renderer tests/test_view_html.py::test_formula_hwp_eq_preserves_script_in_pre_code
v0.4.0/view-renderer tests/test_view_html.py::test_formula_latex_display_wraps_in_div_math
v0.4.0/view-renderer tests/test_view_html.py::test_formula_latex_inline_wraps_in_span_math
v0.4.0/view-renderer tests/test_view_html.py::test_formula_mathml_preserves_script_in_pre_code
v0.4.0/view-renderer tests/test_view_html.py::test_list_item_level_preserved_via_data_level_attribute
v0.4.0/view-renderer tests/test_view_html.py::test_page_headers_and_footers_excluded_from_html
v0.4.0/view-renderer tests/test_view_html.py::test_picture_real_fixture_no_base64
v0.4.0/view-renderer tests/test_view_html.py::test_picture_renders_as_img_with_uri_passthrough
v0.4.0/view-renderer tests/test_view_html.py::test_picture_without_image_renders_alt_only_no_src
v0.4.0/view-renderer tests/test_view_html.py::test_real_fixture_furniture_paragraph_text_excluded_from_html
v0.4.0/view-renderer tests/test_view_html.py::test_table_html_appears_as_substring_unchanged
v0.4.0/view-renderer tests/test_view_html.py::test_table_html_real_fixture_appears_as_substring
v0.4.0/view-renderer tests/test_view_html.py::test_to_html_byte_equal_on_repeated_calls
v0.4.0/view-renderer tests/test_view_html.py::test_to_html_byte_equal_with_and_without_css_distinct
v0.4.0/view-renderer tests/test_view_html.py::test_to_html_default_has_zero_style_tags
v0.4.0/view-renderer tests/test_view_html.py::test_to_html_empty_document_still_well_formed
v0.4.0/view-renderer tests/test_view_html.py::test_to_html_escapes_special_chars_in_paragraph
v0.4.0/view-renderer tests/test_view_html.py::test_to_html_include_css_real_fixture_well_formed
v0.4.0/view-renderer tests/test_view_html.py::test_to_html_include_css_true_has_exactly_one_style_in_head
v0.4.0/view-renderer tests/test_view_html.py::test_to_html_real_fixture_well_formed
v0.4.0/view-renderer tests/test_view_html.py::test_to_html_returns_doctype_and_html5_skeleton
v0.4.0/view-renderer tests/test_view_markdown.py::test_endnote_uses_separate_number_space_with_en_prefix
v0.4.0/view-renderer tests/test_view_markdown.py::test_footnote_and_endnote_coexist_with_separate_prefixes
v0.4.0/view-renderer tests/test_view_markdown.py::test_footnote_reference_appears_in_paragraph_and_definition_at_end
v0.4.0/view-renderer tests/test_view_markdown.py::test_formula_hwp_eq_uses_fenced_block
v0.4.0/view-renderer tests/test_view_markdown.py::test_formula_latex_display_uses_double_dollar
v0.4.0/view-renderer tests/test_view_markdown.py::test_formula_latex_inline_uses_single_dollar
v0.4.0/view-renderer tests/test_view_markdown.py::test_formula_mathml_uses_fenced_block
v0.4.0/view-renderer tests/test_view_markdown.py::test_list_item_level_indented_in_markdown
v0.4.0/view-renderer tests/test_view_markdown.py::test_merged_table_falls_back_to_html_inline
v0.4.0/view-renderer tests/test_view_markdown.py::test_page_header_and_footer_text_excluded_from_markdown
v0.4.0/view-renderer tests/test_view_markdown.py::test_picture_description_with_brackets_is_backslash_escaped
v0.4.0/view-renderer tests/test_view_markdown.py::test_picture_real_fixture_no_base64
v0.4.0/view-renderer tests/test_view_markdown.py::test_picture_with_image_renders_as_markdown_image
v0.4.0/view-renderer tests/test_view_markdown.py::test_picture_without_image_renders_alt_only
v0.4.0/view-renderer tests/test_view_markdown.py::test_real_fixture_furniture_paragraph_text_excluded
v0.4.0/view-renderer tests/test_view_markdown.py::test_simple_table_renders_as_gfm_pipe_table
v0.4.0/view-renderer tests/test_view_markdown.py::test_to_markdown_does_not_mutate_ir
v0.4.0/view-renderer tests/test_view_markdown.py::test_to_markdown_empty_document_returns_empty_string
v0.4.0/view-renderer tests/test_view_markdown.py::test_to_markdown_is_byte_equal_on_repeated_calls
v0.4.0/view-renderer tests/test_view_markdown.py::test_to_markdown_paragraphs_separated_by_blank_line
v0.4.0/view-renderer tests/test_view_markdown.py::test_to_markdown_real_fixture_code_fences_balanced
v0.4.0/view-renderer tests/test_view_markdown.py::test_to_markdown_real_fixture_footnote_refs_match_defs
v0.4.0/view-renderer tests/test_view_markdown.py::test_to_markdown_real_fixture_gfm_tables_are_consistent
v0.4.0/view-renderer tests/test_view_markdown.py::test_to_markdown_returns_string_ending_in_newline
v0.4.0/view-renderer AC-1 tests/test_view_markdown.py::test_picture_description_with_brackets_is_backslash_escaped
v0.4.0/view-renderer AC-1 tests/test_view_markdown.py::test_to_markdown_empty_document_returns_empty_string
v0.4.0/view-renderer AC-1 tests/test_view_markdown.py::test_to_markdown_paragraphs_separated_by_blank_line
v0.4.0/view-renderer AC-1 tests/test_view_markdown.py::test_to_markdown_real_fixture_code_fences_balanced
v0.4.0/view-renderer AC-1 tests/test_view_markdown.py::test_to_markdown_real_fixture_footnote_refs_match_defs
v0.4.0/view-renderer AC-1 tests/test_view_markdown.py::test_to_markdown_real_fixture_gfm_tables_are_consistent
v0.4.0/view-renderer AC-1 tests/test_view_markdown.py::test_to_markdown_returns_string_ending_in_newline
v0.4.0/view-renderer AC-10 tests/test_view_html.py::test_to_html_byte_equal_on_repeated_calls
v0.4.0/view-renderer AC-10 tests/test_view_html.py::test_to_html_byte_equal_with_and_without_css_distinct
v0.4.0/view-renderer AC-10 tests/test_view_markdown.py::test_to_markdown_does_not_mutate_ir
v0.4.0/view-renderer AC-10 tests/test_view_markdown.py::test_to_markdown_is_byte_equal_on_repeated_calls
v0.4.0/view-renderer AC-11 tests/test_view_baseline.py::test_aift_to_ir_byte_equal_to_v0_3_2_baseline
v0.4.0/view-renderer AC-11 tests/test_view_baseline.py::test_table_vpos_to_ir_byte_equal_to_v0_3_2_baseline
v0.4.0/view-renderer AC-2 tests/test_view_html.py::test_to_html_empty_document_still_well_formed
v0.4.0/view-renderer AC-2 tests/test_view_html.py::test_to_html_escapes_special_chars_in_paragraph
v0.4.0/view-renderer AC-2 tests/test_view_html.py::test_to_html_real_fixture_well_formed
v0.4.0/view-renderer AC-2 tests/test_view_html.py::test_to_html_returns_doctype_and_html5_skeleton
v0.4.0/view-renderer AC-3 tests/test_view_markdown.py::test_merged_table_falls_back_to_html_inline
v0.4.0/view-renderer AC-3 tests/test_view_markdown.py::test_simple_table_renders_as_gfm_pipe_table
v0.4.0/view-renderer AC-4 tests/test_view_html.py::test_table_html_appears_as_substring_unchanged
v0.4.0/view-renderer AC-4 tests/test_view_html.py::test_table_html_real_fixture_appears_as_substring
v0.4.0/view-renderer AC-5 tests/test_view_html.py::test_picture_real_fixture_no_base64
v0.4.0/view-renderer AC-5 tests/test_view_html.py::test_picture_renders_as_img_with_uri_passthrough
v0.4.0/view-renderer AC-5 tests/test_view_html.py::test_picture_without_image_renders_alt_only_no_src
v0.4.0/view-renderer AC-5 tests/test_view_markdown.py::test_picture_description_with_brackets_is_backslash_escaped
v0.4.0/view-renderer AC-5 tests/test_view_markdown.py::test_picture_real_fixture_no_base64
v0.4.0/view-renderer AC-5 tests/test_view_markdown.py::test_picture_with_image_renders_as_markdown_image
v0.4.0/view-renderer AC-5 tests/test_view_markdown.py::test_picture_without_image_renders_alt_only
v0.4.0/view-renderer AC-6 tests/test_view_html.py::test_formula_hwp_eq_preserves_script_in_pre_code
v0.4.0/view-renderer AC-6 tests/test_view_html.py::test_formula_latex_display_wraps_in_div_math
v0.4.0/view-renderer AC-6 tests/test_view_html.py::test_formula_latex_inline_wraps_in_span_math
v0.4.0/view-renderer AC-6 tests/test_view_html.py::test_formula_mathml_preserves_script_in_pre_code
v0.4.0/view-renderer AC-6 tests/test_view_markdown.py::test_formula_hwp_eq_uses_fenced_block
v0.4.0/view-renderer AC-6 tests/test_view_markdown.py::test_formula_latex_display_uses_double_dollar
v0.4.0/view-renderer AC-6 tests/test_view_markdown.py::test_formula_latex_inline_uses_single_dollar
v0.4.0/view-renderer AC-6 tests/test_view_markdown.py::test_formula_mathml_uses_fenced_block
v0.4.0/view-renderer AC-7 tests/test_view_html.py::test_endnote_uses_separate_id_namespace
v0.4.0/view-renderer AC-7 tests/test_view_html.py::test_footnote_and_endnote_coexist_with_separate_id_namespaces
v0.4.0/view-renderer AC-7 tests/test_view_html.py::test_footnote_renders_sup_ref_and_aside_def
v0.4.0/view-renderer AC-7 tests/test_view_markdown.py::test_endnote_uses_separate_number_space_with_en_prefix
v0.4.0/view-renderer AC-7 tests/test_view_markdown.py::test_footnote_and_endnote_coexist_with_separate_prefixes
v0.4.0/view-renderer AC-7 tests/test_view_markdown.py::test_footnote_reference_appears_in_paragraph_and_definition_at_end
v0.4.0/view-renderer AC-8 tests/test_view_html.py::test_page_headers_and_footers_excluded_from_html
v0.4.0/view-renderer AC-8 tests/test_view_html.py::test_real_fixture_furniture_paragraph_text_excluded_from_html
v0.4.0/view-renderer AC-8 tests/test_view_markdown.py::test_page_header_and_footer_text_excluded_from_markdown
v0.4.0/view-renderer AC-8 tests/test_view_markdown.py::test_real_fixture_furniture_paragraph_text_excluded
v0.4.0/view-renderer AC-9 tests/test_view_html.py::test_to_html_default_has_zero_style_tags
v0.4.0/view-renderer AC-9 tests/test_view_html.py::test_to_html_include_css_real_fixture_well_formed
v0.4.0/view-renderer AC-9 tests/test_view_html.py::test_to_html_include_css_true_has_exactly_one_style_in_head
v0.5.0/mcp tests/test_mcp_server.py::TestBackwardsCompat::test_chunks_structured_content_matches_v050_dump
v0.5.0/mcp tests/test_mcp_server.py::TestBackwardsCompat::test_get_ir_structured_content_matches_v050_dump
v0.5.0/mcp tests/test_mcp_server.py::TestBackwardsCompat::test_iter_blocks_structured_content_matches_v050_dump
v0.5.0/mcp tests/test_mcp_server.py::TestChunks::test_default_paragraph_mode
v0.5.0/mcp tests/test_mcp_server.py::TestChunks::test_include_furniture_appends_furniture_chunks
v0.5.0/mcp tests/test_mcp_server.py::TestChunks::test_include_furniture_ignored_outside_ir_blocks
v0.5.0/mcp tests/test_mcp_server.py::TestChunks::test_missing_extras_does_not_break_other_tools
v0.5.0/mcp tests/test_mcp_server.py::TestChunks::test_missing_extras_raises_tool_error
v0.5.0/mcp tests/test_mcp_server.py::TestChunks::test_modes_all_supported
v0.5.0/mcp tests/test_mcp_server.py::TestChunks::test_size_overlap_pass_through
v0.5.0/mcp tests/test_mcp_server.py::TestErrorHandling::test_extract_text_missing_file
v0.5.0/mcp tests/test_mcp_server.py::TestErrorHandling::test_iter_blocks_invalid_kind
v0.5.0/mcp tests/test_mcp_server.py::TestErrorHandling::test_unknown_tool_name
v0.5.0/mcp tests/test_mcp_server.py::TestExtractText::test_returns_string
v0.5.0/mcp tests/test_mcp_server.py::TestGetIr::test_returns_typed_hwp_document
v0.5.0/mcp tests/test_mcp_server.py::TestIterBlocks::test_default_returns_typed_blocks
v0.5.0/mcp tests/test_mcp_server.py::TestIterBlocks::test_kind_filter_paragraph
v0.5.0/mcp tests/test_mcp_server.py::TestIterBlocks::test_limit_truncates
v0.5.0/mcp tests/test_mcp_server.py::TestIterBlocks::test_scope_furniture_subset
v0.5.0/mcp tests/test_mcp_server.py::TestPackagingSurface::test_entry_point_dispatches_to_run
v0.5.0/mcp tests/test_mcp_server.py::TestPackagingSurface::test_module_is_top_level_not_under_integrations
v0.5.0/mcp tests/test_mcp_server.py::TestPackagingSurface::test_pyproject_declares_fastmcp_extras_and_script
v0.5.0/mcp tests/test_mcp_server.py::TestParseHwpSummary::test_returns_counts_matching_doc
v0.5.0/mcp tests/test_mcp_server.py::TestSyncHandler::test_all_registered_tools_are_sync
v0.5.0/mcp tests/test_mcp_server.py::TestToHtml::test_matches_view_api_no_css
v0.5.0/mcp tests/test_mcp_server.py::TestToHtml::test_matches_view_api_with_css
v0.5.0/mcp tests/test_mcp_server.py::TestToHtml::test_returns_html5_document
v0.5.0/mcp tests/test_mcp_server.py::TestToMarkdown::test_matches_view_api
v0.5.0/mcp tests/test_mcp_server.py::TestToMarkdown::test_returns_non_empty_string
v0.5.0/mcp tests/test_mcp_server.py::TestToolRegistry::test_each_tool_has_description
v0.5.0/mcp tests/test_mcp_server.py::TestToolRegistry::test_iter_blocks_kind_schema_is_enum
v0.5.0/mcp tests/test_mcp_server.py::TestToolRegistry::test_iter_blocks_scope_schema_is_enum
v0.5.0/mcp tests/test_mcp_server.py::TestToolRegistry::test_lists_exactly_expected_tools
v0.5.0/mcp tests/test_mcp_server.py::TestTransportCli::test_argparse_custom_host
v0.5.0/mcp tests/test_mcp_server.py::TestTransportCli::test_argparse_default_transport_stdio
v0.5.0/mcp tests/test_mcp_server.py::TestTransportCli::test_argparse_invalid_transport_exits
v0.5.0/mcp tests/test_mcp_server.py::TestTransportCli::test_argparse_port_out_of_range_exits
v0.5.0/mcp tests/test_mcp_server.py::TestTransportCli::test_argparse_streamable_http_with_port
v0.5.0/mcp tests/test_mcp_server.py::TestTransportCli::test_run_dispatch_stdio
v0.5.0/mcp tests/test_mcp_server.py::TestTransportCli::test_run_dispatch_streamable_http
v0.5.0/mcp tests/test_mcp_server.py::TestTransportCli::test_run_stdio_with_non_default_host_exits
v0.5.0/mcp tests/test_mcp_server.py::TestTransportCli::test_run_stdio_with_non_default_port_exits
v0.5.0/mcp tests/test_mcp_server.py::TestTransportCli::test_streamable_http_real_round_trip
v0.5.0/mcp tests/test_mcp_server.py::TestTypedClientData::test_chunks_client_data_is_typed_list
v0.5.0/mcp tests/test_mcp_server.py::TestTypedClientData::test_get_ir_client_data_has_typed_attributes
v0.5.0/mcp tests/test_mcp_server.py::TestTypedClientData::test_iter_blocks_client_data_is_typed_list
v0.5.0/mcp tests/test_mcp_server.py::TestTypedModelRoundTrip::test_chunk_record_round_trip
v0.5.0/mcp tests/test_mcp_server.py::TestTypedModelRoundTrip::test_get_ir_round_trip
v0.5.0/mcp tests/test_mcp_server.py::TestTypedOutputSchema::test_chunks_schema_exposes_chunk_record_fields
v0.5.0/mcp tests/test_mcp_server.py::TestTypedOutputSchema::test_get_ir_schema_exposes_hwp_document_defs
v0.5.0/mcp tests/test_mcp_server.py::TestTypedOutputSchema::test_iter_blocks_schema_exposes_block_union_variants
v0.5.0/mcp tests/test_mcp_server.py::TestTypedSignatures::test_chunk_record_is_exposed_on_tools_module
v0.5.0/mcp tests/test_mcp_server.py::TestTypedSignatures::test_chunk_record_metadata_annotation_is_free_dict
v0.5.0/mcp tests/test_mcp_server.py::TestTypedSignatures::test_chunks_return_annotation_is_list_of_chunk_record
v0.5.0/mcp tests/test_mcp_server.py::TestTypedSignatures::test_get_ir_return_annotation_is_hwp_document
v0.5.0/mcp tests/test_mcp_server.py::TestTypedSignatures::test_iter_blocks_return_annotation_is_list_of_block
v0.5.0/mcp AC-10 tests/test_mcp_server.py::TestPackagingSurface::test_module_is_top_level_not_under_integrations
v0.5.0/mcp AC-2 tests/test_mcp_server.py::TestToolRegistry::test_lists_exactly_expected_tools
v0.5.0/mcp AC-3 tests/test_mcp_server.py::TestErrorHandling::test_iter_blocks_invalid_kind
v0.5.0/mcp AC-4 tests/test_mcp_server.py::TestErrorHandling::test_extract_text_missing_file
v0.5.0/mcp AC-5 tests/test_mcp_server.py::TestSyncHandler::test_all_registered_tools_are_sync
v0.5.0/mcp AC-6 tests/test_mcp_server.py::TestToHtml::test_matches_view_api_no_css
v0.5.0/mcp AC-6 tests/test_mcp_server.py::TestToHtml::test_matches_view_api_with_css
v0.5.0/mcp AC-6 tests/test_mcp_server.py::TestToMarkdown::test_matches_view_api
v0.5.0/mcp AC-7 tests/test_mcp_server.py::TestChunks::test_missing_extras_does_not_break_other_tools
v0.5.0/mcp AC-7 tests/test_mcp_server.py::TestChunks::test_missing_extras_raises_tool_error
v0.5.0/mcp AC-8 tests/test_mcp_server.py::TestTransportCli::test_argparse_custom_host
v0.5.0/mcp AC-8 tests/test_mcp_server.py::TestTransportCli::test_argparse_default_transport_stdio
v0.5.0/mcp AC-8 tests/test_mcp_server.py::TestTransportCli::test_argparse_invalid_transport_exits
v0.5.0/mcp AC-8 tests/test_mcp_server.py::TestTransportCli::test_argparse_port_out_of_range_exits
v0.5.0/mcp AC-8 tests/test_mcp_server.py::TestTransportCli::test_argparse_streamable_http_with_port
v0.5.0/mcp AC-8 tests/test_mcp_server.py::TestTransportCli::test_run_dispatch_stdio
v0.5.0/mcp AC-8 tests/test_mcp_server.py::TestTransportCli::test_run_dispatch_streamable_http
v0.5.0/mcp AC-8 tests/test_mcp_server.py::TestTransportCli::test_run_stdio_with_non_default_host_exits
v0.5.0/mcp AC-8 tests/test_mcp_server.py::TestTransportCli::test_run_stdio_with_non_default_port_exits
v0.5.0/mcp AC-8 tests/test_mcp_server.py::TestTransportCli::test_streamable_http_real_round_trip
v0.5.0/mcp AC-9 tests/test_mcp_server.py::TestPackagingSurface::test_entry_point_dispatches_to_run
v0.5.0/mcp AC-9 tests/test_mcp_server.py::TestPackagingSurface::test_pyproject_declares_fastmcp_extras_and_script
v0.5.1/mcp-typed-output AC-1 tests/test_mcp_server.py::TestTypedModelRoundTrip::test_get_ir_round_trip
v0.5.1/mcp-typed-output AC-1 tests/test_mcp_server.py::TestTypedSignatures::test_get_ir_return_annotation_is_hwp_document
v0.5.1/mcp-typed-output AC-2 tests/test_mcp_server.py::TestTypedSignatures::test_iter_blocks_return_annotation_is_list_of_block
v0.5.1/mcp-typed-output AC-3 tests/test_mcp_server.py::TestTypedModelRoundTrip::test_chunk_record_round_trip
v0.5.1/mcp-typed-output AC-3 tests/test_mcp_server.py::TestTypedSignatures::test_chunk_record_is_exposed_on_tools_module
v0.5.1/mcp-typed-output AC-3 tests/test_mcp_server.py::TestTypedSignatures::test_chunks_return_annotation_is_list_of_chunk_record
v0.5.1/mcp-typed-output AC-4 tests/test_mcp_server.py::TestTypedOutputSchema::test_chunks_schema_exposes_chunk_record_fields
v0.5.1/mcp-typed-output AC-4 tests/test_mcp_server.py::TestTypedOutputSchema::test_get_ir_schema_exposes_hwp_document_defs
v0.5.1/mcp-typed-output AC-4 tests/test_mcp_server.py::TestTypedOutputSchema::test_iter_blocks_schema_exposes_block_union_variants
v0.5.1/mcp-typed-output AC-5 tests/test_mcp_server.py::TestBackwardsCompat::test_chunks_structured_content_matches_v050_dump
v0.5.1/mcp-typed-output AC-5 tests/test_mcp_server.py::TestBackwardsCompat::test_get_ir_structured_content_matches_v050_dump
v0.5.1/mcp-typed-output AC-5 tests/test_mcp_server.py::TestBackwardsCompat::test_iter_blocks_structured_content_matches_v050_dump
v0.5.1/mcp-typed-output AC-6 tests/test_mcp_server.py::TestTypedClientData::test_chunks_client_data_is_typed_list
v0.5.1/mcp-typed-output AC-6 tests/test_mcp_server.py::TestTypedClientData::test_get_ir_client_data_has_typed_attributes
v0.5.1/mcp-typed-output AC-6 tests/test_mcp_server.py::TestTypedClientData::test_iter_blocks_client_data_is_typed_list
v0.5.1/mcp-typed-output AC-7 tests/test_mcp_server.py::TestTypedSignatures::test_chunk_record_metadata_annotation_is_free_dict
v0.6.0/png-vlm-render AC-1 tests/test_render_png.py::TestRenderPng::test_returns_png_magic
v0.6.0/png-vlm-render AC-2 tests/test_render_png.py::TestRenderPng::test_render_all_count_matches_page_count
v0.6.0/png-vlm-render AC-3 tests/test_render_png.py::TestRenderPng::test_scale_doubles_width
v0.6.0/png-vlm-render AC-4 tests/test_render_png.py::TestRenderPng::test_max_pixels_guard_raises
v0.6.0/png-vlm-render AC-5 tests/test_render_png.py::TestMcpRenderPagePng::test_returns_image_content
v0.6.0/png-vlm-render AC-6 tests/test_render_png.py::TestArenderPng::test_async_returns_png_without_panic
v0.6.0/png-vlm-render AC-7 tests/test_render_png.py::TestExportPng::test_writes_files_with_png_magic