xref: /trunk/test/aoo-test/tests/selftest/test_odfversion.py (revision 85d6e4e58e50c1ed01601e2737a66d9715456246)
1*85d6e4e5SJim Jagielski################################################################
2*85d6e4e5SJim Jagielski#
3*85d6e4e5SJim Jagielski#  Licensed to the Apache Software Foundation (ASF) under one
4*85d6e4e5SJim Jagielski#  or more contributor license agreements.  See the NOTICE file
5*85d6e4e5SJim Jagielski#  distributed with this work for additional information
6*85d6e4e5SJim Jagielski#  regarding copyright ownership.  The ASF licenses this file
7*85d6e4e5SJim Jagielski#  to you under the Apache License, Version 2.0 (the
8*85d6e4e5SJim Jagielski#  "License"); you may not use this file except in compliance
9*85d6e4e5SJim Jagielski#  with the License.  You may obtain a copy of the License at
10*85d6e4e5SJim Jagielski#
11*85d6e4e5SJim Jagielski#    http://www.apache.org/licenses/LICENSE-2.0
12*85d6e4e5SJim Jagielski#
13*85d6e4e5SJim Jagielski#  Unless required by applicable law or agreed to in writing,
14*85d6e4e5SJim Jagielski#  software distributed under the License is distributed on an
15*85d6e4e5SJim Jagielski#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*85d6e4e5SJim Jagielski#  KIND, either express or implied.  See the License for the
17*85d6e4e5SJim Jagielski#  specific language governing permissions and limitations
18*85d6e4e5SJim Jagielski#  under the License.
19*85d6e4e5SJim Jagielski
20*85d6e4e5SJim Jagielski"""aootest.odfversion: the declared versions of a package, and which packages are formula documents."""
21*85d6e4e5SJim Jagielskiimport zipfile
22*85d6e4e5SJim Jagielski
23*85d6e4e5SJim Jagielskiimport pytest
24*85d6e4e5SJim Jagielski
25*85d6e4e5SJim Jagielskifrom aootest import odfversion
26*85d6e4e5SJim Jagielski
27*85d6e4e5SJim Jagielskipytestmark = pytest.mark.selftest
28*85d6e4e5SJim Jagielski
29*85d6e4e5SJim JagielskiMANIFEST = '<manifest:manifest xmlns:manifest="x" manifest:version="1.2"/>'
30*85d6e4e5SJim Jagielski
31*85d6e4e5SJim Jagielski
32*85d6e4e5SJim Jagielskidef package(path, mimetype, content):
33*85d6e4e5SJim Jagielski    with zipfile.ZipFile(path, "w") as z:
34*85d6e4e5SJim Jagielski        z.writestr("mimetype", mimetype)
35*85d6e4e5SJim Jagielski        z.writestr("content.xml", content)
36*85d6e4e5SJim Jagielski        z.writestr("META-INF/manifest.xml", MANIFEST)
37*85d6e4e5SJim Jagielski    return str(path)
38*85d6e4e5SJim Jagielski
39*85d6e4e5SJim Jagielski
40*85d6e4e5SJim Jagielskidef test_a_text_document_declares_its_version_in_content_and_manifest(tmp_path):
41*85d6e4e5SJim Jagielski    p = package(tmp_path / "a.odt", "application/vnd.oasis.opendocument.text", '<office:document-content office:version="1.2"/>')
42*85d6e4e5SJim Jagielski    assert odfversion.odf_versions(p) == ("1.2", "1.2")
43*85d6e4e5SJim Jagielski    assert not odfversion.is_formula(p)
44*85d6e4e5SJim Jagielski
45*85d6e4e5SJim Jagielski
46*85d6e4e5SJim Jagielskidef test_a_formula_document_has_a_mathml_root_without_a_version(tmp_path):
47*85d6e4e5SJim Jagielski    p = package(tmp_path / "a.odf", "application/vnd.oasis.opendocument.formula", '<math xmlns="http://www.w3.org/1998/Math/MathML"/>')
48*85d6e4e5SJim Jagielski    assert odfversion.odf_versions(p) == (None, "1.2")
49*85d6e4e5SJim Jagielski    assert odfversion.is_formula(p)
50