<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Cangjie Code Coverage Report</title>
<style media="screen" type="text/css">
body
{
color: #000000;
background-color: #FFFFFF;
}
a:link
{
color: navy;
text-decoration: underline;
}
a:visited
{
color: maroon;
text-decoration: underline;
}
a:active
{
color: navy;
text-decoration: underline;
}
td
{
font-family: sans-serif;
}
td.title
{
text-align: center;
padding-bottom: 10px;
font-size: 20pt;
font-weight: bold;
}
td.headerName
{
text-align: right;
color: black;
padding-right: 6px;
font-weight: bold;
vertical-align: top;
white-space: nowrap;
}
td.headerValue
{
text-align: left;
color: #284FA8;
font-family: sans-serif;
font-weight: bold;
white-space: nowrap;
}
td.headerTableEntry
{
text-align: right;
color: black;
font-weight: bold;
white-space: nowrap;
padding-left: 12px;
padding-right: 4px;
background-color: LightBlue;
}
td.headerValueLeg
{
text-align: left;
color: black;
font-size: 80%;
white-space: nowrap;
padding-top: 2px;
}
td.hr
{
background-color: navy;
height:3px;
}
td.footer
{
text-align: center;
padding-top: 3px;
font-family: sans-serif;
}
td.coverTableHead
{
text-align: center;
color: white;
background-color: SteelBlue;
font-family: sans-serif;
font-size: 120%;
white-space: nowrap;
padding-left: 4px;
padding-right: 4px;
}
td.coverFile
{
text-align: left;
padding-left: 10px;
padding-right: 20px;
color: black;
background-color: LightBlue;
font-family: monospace;
font-weight: bold;
font-size: 110%;
}
td.coverBar
{
padding-left: 10px;
padding-right: 10px;
background-color: LightBlue;
}
td.coverBarOutline
{
background-color: white;
}
td.coverValue
{
padding-top: 2px;
text-align: right;
padding-left: 10px;
padding-right: 10px;
font-family: sans-serif;
white-space: nowrap;
font-weight: bold;
}
a.detail:link
{
color: #B8D0FF;
font-size:80%;
}
a.detail:visited
{
color: #B8D0FF;
font-size:80%;
}
a.detail:active
{
color: #FFFFFF;
font-size:80%;
}
.graphcont{
color:#000;
font-weight:700;
float:left
}
.graph{
float:left;
background-color: white;
position:relative;
width:280px;
padding:0
}
.graph .bar{
display:block;
position:relative;
border:black 1px solid;
text-align:center;
color:#fff;
height:10px;
font-family:Arial,Helvetica,sans-serif;
font-size:12px;
line-height:1.9em
}
.graph .bar span{
position:absolute;
left:1em
}
td.coveredLine,
span.coveredLine
{
background-color: LightGreen!important;
}
td.uncoveredLine,
span.uncoveredLine
{
background-color: LightPink!important;
}
.linebranch, .linecount
{
border-right: 1px gray solid;
background-color: lightgray;
}
.linebranchDetails
{
position: relative;
}
.linebranchSummary
{
cursor: help;
}
.linebranchContents
{
font-family: sans-serif;
font-size: small;
text-align: left;
position: absolute;
width: 15em;
padding: 1em;
background: white;
border: solid gray 1px;
box-shadow: 5px 5px 10px gray;
z-index: 1;
}
.takenBranch
{
color: Green!important;
cursor: help;
}
.notTakenBranch
{
color: Red!important;
cursor: help;
}
.src
{
padding-left: 12px;
}
.srcHeader,
span.takenBranch,
span.notTakenBranch
{
font-family: monospace;
font-weight: bold;
}
pre
{
height : 15px;
margin-top: 0;
margin-bottom: 0;
}
.lineno
{
background-color: #EFE383;
border-right: 1px solid #BBB15F;
}
</style>
</head>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td class="title">Cangjie Code Coverage Report</td></tr>
<tr><td class="hr"></td></tr>
<tr>
<td width="100%">
<table cellpadding="1" border="0" width="100%">
<tr>
<td class="headerName">File:</td>
<td class="headerValue">src/GZUtils.cj</td>
<td width="5%"></td>
<td width="15%"></td>
<td width="10%" class="headerValue" style="text-align:right;">Hit</td>
<td width="10%" class="headerValue" style="text-align:right;">Total</td>
<td width="15%" class="headerValue" style="text-align:right;">Coverage</td>
</tr>
<tr>
<td class="headerName">Date:</td>
<td class="headerValue">2022-05-17 16:02:09</td>
<td></td>
<td class="headerName">Lines:</td>
<td class="headerTableEntry">65</td>
<td class="headerTableEntry">73</td>
<td class="headerTableEntry" style="background-color:Yellow">89.0 %</td>
</tr>
<tr>
<td class="headerName">Legend:</td>
<td class="headerValueLeg">
<span style="background-color:LightPink">low: < 75.0 %</span>
<span style="background-color:Yellow">medium: >= 75.0 %</span>
<span style="background-color:LightGreen">high: >= 90.0 %</span>
</td>
<td></td>
<td class="headerName">Branches:</td>
<td class="headerTableEntry">-</td>
<td class="headerTableEntry">-</td>
<td class="headerTableEntry" style="background-color:LightGreen">-</td>
</tr>
</table>
</td>
</tr>
<tr><td class="hr"></td></tr>
</table>
<br>
<table cellspacing="0" cellpadding="1">
<tr>
<td width="5%" align="right" class="srcHeader">Line</td>
<td width="5%" align="right" class="srcHeader">Branch</td>
<td width="5%" align="center" class="srcHeader">Hit</td>
<td width="75%" align="left" class="srcHeader src">Source</td>
</tr>
<tr>
<td align="right" class="lineno"><pre>1</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre>/*</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>2</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> * Copyright (c) Huawei Technologies Co., Ltd. 2022-2022. All rights reserved.</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>3</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> */</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>4</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre></pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>5</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre>/**</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>6</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> * @file</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>7</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> *</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>8</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> * This is a class that provides compression and decompression functions.</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>9</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> * Provides function such as compress deCompress.</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>10</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> */</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>11</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre></pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>12</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre>package zip4cj</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>13</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre>from compress import zlib.*</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>14</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre>from std import collection.*</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>15</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre></pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>16</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre>/**</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>17</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> * This class provides compression and decompression of gzip</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>18</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> * @since 0.28.4 @author lizhenjie</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>19</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> */</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>20</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount uncoveredLine"><pre>N</pre></td>
<td align="left" class="src uncoveredLine"><pre>public open class GZUtils {</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>21</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre></pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>22</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> /**</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>23</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> * Gzip compression method</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>24</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> *</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>25</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> * @param filePath Compressed file path</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>26</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> * @param level Compressed level</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>27</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> * @param outFileName Output file name after compression</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>28</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> *</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>29</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> * @return Returns the file name and compressed data</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>30</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> * @since 0.28.4</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>31</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> */</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>32</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre></pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>33</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> public static func compress(filePath: String, level: UInt32, outFileName: String): String*Array<UInt8> {</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>34</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> var fileInfo = FileInfo(filePath)</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>35</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> if (!fileInfo.exist()) {</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>36</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> throw RuntimeException("file not exist!")</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>37</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> }</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>38</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> var fileStream = FileStream(fileInfo)</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>39</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> var input = Array<UInt8>()</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>40</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> if (fileStream.openFile()) {</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>41</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> input = fileStream.readAllBytes()</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>42</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> }</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>43</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> var path = fileInfo.getPath()</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>44</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> var start = 0</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>45</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> if (path.contains("\\")) {</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>46</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount uncoveredLine"><pre>N</pre></td>
<td align="left" class="src uncoveredLine"><pre> match (path.lastIndexOf('\\')) {</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>47</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount uncoveredLine"><pre>N</pre></td>
<td align="left" class="src uncoveredLine"><pre> case Some(value) => start = value</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>48</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount uncoveredLine"><pre>N</pre></td>
<td align="left" class="src uncoveredLine"><pre> case None => start = 0</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>49</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> }</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>50</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> }else {</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>51</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> match (path.lastIndexOf('/')) {</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>52</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> case Some(value) => start = value</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>53</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount uncoveredLine"><pre>N</pre></td>
<td align="left" class="src uncoveredLine"><pre> case None => start = 0</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>54</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> }</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>55</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> }</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>56</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> let fileName = path.slice(start+1, path.size()-start-1)</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>57</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> var retbuf = Array<UInt8>()</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>58</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> if (input.size() > 0) {</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>59</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> var deflate = Deflate()</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>60</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> var comprLen = input.size()</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>61</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> var ret: UInt32 = 0</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>62</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> deflate.deflateInit(</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>63</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> wrap: WrapType.GZIP,</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>64</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> level: level,</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>65</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> wbits: DEF_WINDOW_BITS,</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>66</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> mlevel: DEF_MEM_LEVEL,</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>67</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> strategy: Z_DEFAULT_STRATEGY</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>68</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> )</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>69</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> var outlength = deflate.deflateBound(input.size())</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>70</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> var outbuf = Array<UInt8>(outlength, {i => 0})</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>71</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> deflate.setInBuf(input)</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>72</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> deflate.setOutBuf(outbuf)</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>73</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> var gzhead = GzHeader()</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>74</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> gzhead.name = Buffer(fileName.toUtf8Array())</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>75</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> deflate.setGzipHeader(gzhead)</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>76</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> ret = deflate.deflate(Z_FINISH)</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>77</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> ret = deflate.deflateEnd()</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>78</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> var fileName = ""</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>79</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> if (outFileName.endsWith(".gz")) {</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>80</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> fileName = outFileName</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>81</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> } else {</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>82</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> fileName = outFileName + ".gz"</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>83</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> }</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>84</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> return (fileName, outbuf[0..deflate.getOutDataLength()])</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>85</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> }</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>86</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> return ("", retbuf)</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>87</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> }</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>88</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre></pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>89</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> /**</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>90</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> * decompressed gzip file</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>91</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> *</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>92</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> * @param filePath The path of the file that needs to be unzipped</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>93</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> *</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>94</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> * @return Returns the file name and compressed data</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>95</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> * @since 0.28.4</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>96</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> */</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>97</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> public static func deCompress(filePath: String): String*ArrayList<UInt8> {</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>98</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> return deCompress(FileUtils.readFile(filePath))</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>99</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> }</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>100</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre></pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>101</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> /**</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>102</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> * decompressed gzip file</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>103</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> *</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>104</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> * @param input Data to be decompressed</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>105</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> *</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>106</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> * @return Returns the unzipped file name and compressed data</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>107</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> * @since 0.28.4</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>108</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> */</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>109</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> public static func deCompress(input: Array<UInt8>): String*ArrayList<UInt8> {</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>110</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> var retbuf: ArrayList<UInt8> = ArrayList<UInt8>()</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>111</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> if (input.size() > 0) {</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>112</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> var inflate = Inflate()</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>113</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> var comprLen = input.size()</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>114</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> var ret: UInt32 = 0</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>115</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> var outbuf = Array<UInt8>(comprLen, {i => 0})</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>116</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> inflate.inflateInit(wrap: WrapType.GZIP, wbits: DEF_WINDOW_BITS, ischeck: true)</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>117</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> inflate.setInBuf(input)</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>118</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> inflate.setOutBuf(outbuf)</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>119</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> var gzhead = GzHeader()</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>120</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> inflate.getGzipHeader(gzhead)</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>121</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> while (true) {</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>122</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> ret = inflate.inflate(Z_NO_FLUSH)</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>123</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> if (ret == Z_OK) {</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>124</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> if (inflate.isHaveOutData()) {</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>125</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> retbuf.addAll(outbuf[0..inflate.getOutDataLength()])</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>126</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> inflate.resetOutBuf()</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>127</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> }</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>128</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> } else if (ret == Z_STREAM_END) {</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>129</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> if (inflate.isHaveOutData()) {</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>130</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> retbuf.addAll(outbuf[0..inflate.getOutDataLength()])</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>131</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> inflate.resetOutBuf()</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>132</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> }</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>133</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> break</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>134</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> } else {</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>135</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount uncoveredLine"><pre>N</pre></td>
<td align="left" class="src uncoveredLine"><pre> println("err zlibUnCompressGz()" + inflate.message)</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>136</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount uncoveredLine"><pre>N</pre></td>
<td align="left" class="src uncoveredLine"><pre> break</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>137</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> }</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>138</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> }</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>139</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> ret = inflate.inflateEnd()</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>140</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> var nameArr = Array<UInt8>(gzhead.name)</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>141</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> var fileName = String.fromUtf8(nameArr, start: 0, length: nameArr.size(), isAscii: true)</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>142</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount coveredLine"><pre>Y</pre></td>
<td align="left" class="src coveredLine"><pre> return (fileName, retbuf)</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>143</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> }</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>144</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount uncoveredLine"><pre>N</pre></td>
<td align="left" class="src uncoveredLine"><pre> return ("", retbuf)</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>145</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre> }</pre></td>
</tr>
<tr>
<td align="right" class="lineno"><pre>146</pre></td>
<td align="right" class="linebranch"></td>
<td align="center" class="linecount "><pre></pre></td>
<td align="left" class="src "><pre>}</pre></td>
</tr>
</table>
<br>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td class="hr"><td></tr>
<tr><td class="footer">Generated by: cjcov (Version 1.0.0)</a></td></tr>
</table>
<br>
</body>
</html>