drawing_test.go 2.1 KB
Newer Older
1
// Copyright 2016 - 2024 The excelize Authors. All rights reserved. Use of
2 3 4
// this source code is governed by a BSD-style license that can be found in
// the LICENSE file.
//
5 6 7 8 9
// Package excelize providing a set of functions that allow you to write to and
// read from XLAM / XLSM / XLSX / XLTM / XLTX files. Supports reading and
// writing spreadsheet documents generated by Microsoft Excel™ 2007 and later.
// Supports complex components by high compatibility, and provided streaming
// API for generating or reading data from a worksheet with huge amounts of
xurime's avatar
xurime 已提交
10
// data. This library needs Go version 1.16 or later.
11 12 13 14

package excelize

import (
15
	"encoding/xml"
16
	"sync"
17
	"testing"
18 19

	"github.com/stretchr/testify/assert"
20 21 22 23
)

func TestDrawingParser(t *testing.T) {
	f := File{
24
		Drawings: sync.Map{},
25
		Pkg:      sync.Map{},
26
	}
27
	f.Pkg.Store("charset", MacintoshCyrillicCharset)
28
	f.Pkg.Store("wsDr", []byte(xml.Header+`<xdr:wsDr xmlns:xdr="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing"><xdr:oneCellAnchor><xdr:graphicFrame/></xdr:oneCellAnchor></xdr:wsDr>`))
29
	// Test with one cell anchor
30 31
	_, _, err := f.drawingParser("wsDr")
	assert.NoError(t, err)
32
	// Test with unsupported charset
33 34
	_, _, err = f.drawingParser("charset")
	assert.EqualError(t, err, "XML syntax error on line 1: invalid UTF-8")
35
	// Test with alternate content
36 37
	f.Drawings = sync.Map{}
	f.Pkg.Store("wsDr", []byte(xml.Header+`<xdr:wsDr xmlns:xdr="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing"><mc:AlternateContent xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"><mc:Choice xmlns:a14="http://schemas.microsoft.com/office/drawing/2010/main" Requires="a14"><xdr:twoCellAnchor editAs="oneCell"></xdr:twoCellAnchor></mc:Choice><mc:Fallback/></mc:AlternateContent></xdr:wsDr>`))
38 39
	_, _, err = f.drawingParser("wsDr")
	assert.NoError(t, err)
40
}
41 42 43 44 45 46 47 48 49

func TestDeleteDrawingRels(t *testing.T) {
	f := NewFile()
	// Test delete drawing relationships with unsupported charset
	rels := "xl/drawings/_rels/drawing1.xml.rels"
	f.Relationships.Delete(rels)
	f.Pkg.Store(rels, MacintoshCyrillicCharset)
	f.deleteDrawingRels(rels, "")
}