public void hasSameContentAs()

in testing/xml-truth/src/main/java/org/apache/axiom/truth/xml/XMLSubject.java [368:442]


    public void hasSameContentAs(Object other) {
        try {
            Traverser actual = createTraverser(xml);
            XML expectedXML = XMLTruth.xml(other);
            Traverser expected = createTraverser(expectedXML);
            while (true) {
                Event actualEvent = actual.next();
                Event expectedEvent = expected.next();
                if (expectedEvent == Event.WHITESPACE || expectedEvent == Event.TEXT) {
                    if (!xml.isReportingElementContentWhitespace()) {
                        assertThat(actualEvent).isEqualTo(Event.TEXT);
                    } else if (treatWhitespaceAsText
                            || !expectedXML.isReportingElementContentWhitespace()) {
                        assertThat(actualEvent).isAnyOf(Event.WHITESPACE, Event.TEXT);
                    } else {
                        assertThat(actualEvent).isEqualTo(expectedEvent);
                    }
                } else {
                    assertThat(actualEvent).isEqualTo(expectedEvent);
                }
                if (expectedEvent == null) {
                    break;
                }
                switch (expectedEvent) {
                    case DOCUMENT_TYPE:
                        assertThat(actual.getRootName()).isEqualTo(expected.getRootName());
                        assertThat(actual.getPublicId()).isEqualTo(expected.getPublicId());
                        assertThat(actual.getSystemId()).isEqualTo(expected.getSystemId());
                        break;
                    case START_ELEMENT:
                        QName actualQName = actual.getQName();
                        Map<QName, String> actualAttributes = actual.getAttributes();
                        QName expectedQName = expected.getQName();
                        Map<QName, String> expectedAttributes = expected.getAttributes();
                        assertThat(actualQName).isEqualTo(expectedQName);
                        assertThat(actualAttributes).isEqualTo(expectedAttributes);
                        if (!ignoreNamespacePrefixes) {
                            assertThat(actualQName.getPrefix())
                                    .isEqualTo(expectedQName.getPrefix());
                            if (expectedAttributes != null) {
                                assertThat(extractPrefixes(actualAttributes.keySet()))
                                        .isEqualTo(extractPrefixes(expectedAttributes.keySet()));
                            }
                        }
                        if (!ignoreNamespaceDeclarations) {
                            assertThat(actual.getNamespaces()).isEqualTo(expected.getNamespaces());
                        }
                        break;
                    case END_ELEMENT:
                        break;
                    case TEXT:
                    case WHITESPACE:
                    case COMMENT:
                    case CDATA_SECTION:
                        assertThat(actual.getText()).isEqualTo(expected.getText());
                        break;
                    case ENTITY_REFERENCE:
                        if (expandEntityReferences) {
                            throw new IllegalStateException();
                        }
                        assertThat(actual.getEntityName()).isEqualTo(expected.getEntityName());
                        break;
                    case PROCESSING_INSTRUCTION:
                        assertThat(actual.getPITarget()).isEqualTo(expected.getPITarget());
                        assertThat(actual.getPIData()).isEqualTo(expected.getPIData());
                        break;
                    default:
                        throw new IllegalStateException();
                }
            }
        } catch (TraverserException ex) {
            // TODO: check how to fail properly
            throw new RuntimeException(ex);
        }
    }