<!-- Copyright (c) 2020 ARM Limited. -->
<!--                                 -->
<!-- SPDX-License-Identifier: MIT    -->
<!--                                 -->
<!-- HTML header for doxygen 1.8.13-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="robots" content="NOINDEX, NOFOLLOW" />
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmNN: src/armnnQuantizer/test/QuantizationDataSetTests.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="stylesheet.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <img alt="ArmNN" src="Arm_NN_horizontal_blue.png" style="max-width: 10rem; margin-top: .5rem; margin-left 10px"/>
  <td style="padding-left: 0.5em;">
   <div id="projectname">
   &#160;<span id="projectnumber">20.02</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('_quantization_data_set_tests_8cpp.xhtml','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">QuantizationDataSetTests.cpp File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;boost/test/unit_test.hpp&gt;</code><br />
<code>#include &quot;<a class="el" href="_quantization_data_set_8hpp_source.xhtml">../QuantizationDataSet.hpp</a>&quot;</code><br />
<code>#include &lt;iostream&gt;</code><br />
<code>#include &lt;fstream&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
<code>#include &lt;map&gt;</code><br />
<code>#include &lt;boost/filesystem/operations.hpp&gt;</code><br />
<code>#include &lt;boost/filesystem/fstream.hpp&gt;</code><br />
<code>#include &lt;boost/filesystem/path.hpp&gt;</code><br />
<code>#include &lt;boost/optional/optional.hpp&gt;</code><br />
</div>
<p><a href="_quantization_data_set_tests_8cpp_source.xhtml">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a3f662379b0269b73ca7edd271a7a9bfc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_quantization_data_set_tests_8cpp.xhtml#a3f662379b0269b73ca7edd271a7a9bfc">BOOST_FILESYSTEM_NO_DEPRECATED</a></td></tr>
<tr class="separator:a3f662379b0269b73ca7edd271a7a9bfc"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:aafab10e950eee34163e7f86aacc668fd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_quantization_data_set_tests_8cpp.xhtml#aafab10e950eee34163e7f86aacc668fd">BOOST_FIXTURE_TEST_CASE</a> (CheckDataSet, CsvTestHelper)</td></tr>
<tr class="separator:aafab10e950eee34163e7f86aacc668fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7f71af5c6c124222dd1c42c5df892f4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_quantization_data_set_tests_8cpp.xhtml#af7f71af5c6c124222dd1c42c5df892f4">BOOST_AUTO_TEST_SUITE_END</a> ()</td></tr>
<tr class="separator:af7f71af5c6c124222dd1c42c5df892f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a id="a3f662379b0269b73ca7edd271a7a9bfc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3f662379b0269b73ca7edd271a7a9bfc">&#9670;&nbsp;</a></span>BOOST_FILESYSTEM_NO_DEPRECATED</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define BOOST_FILESYSTEM_NO_DEPRECATED</td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="_quantization_data_set_tests_8cpp_source.xhtml#l00014">14</a> of file <a class="el" href="_quantization_data_set_tests_8cpp_source.xhtml">QuantizationDataSetTests.cpp</a>.</p>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="af7f71af5c6c124222dd1c42c5df892f4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af7f71af5c6c124222dd1c42c5df892f4">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_SUITE_END()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">BOOST_AUTO_TEST_SUITE_END </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="reference">Referenced by <a class="el" href="_quantization_data_set_tests_8cpp_source.xhtml#l00114">BOOST_FIXTURE_TEST_CASE()</a>.</p>

</div>
</div>
<a id="aafab10e950eee34163e7f86aacc668fd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aafab10e950eee34163e7f86aacc668fd">&#9670;&nbsp;</a></span>BOOST_FIXTURE_TEST_CASE()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">BOOST_FIXTURE_TEST_CASE </td>
          <td>(</td>
          <td class="paramtype">CheckDataSet&#160;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">CsvTestHelper&#160;</td>
          <td class="paramname">&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="_quantization_data_set_tests_8cpp_source.xhtml#l00114">114</a> of file <a class="el" href="_quantization_data_set_tests_8cpp_source.xhtml">QuantizationDataSetTests.cpp</a>.</p>

<p class="reference">References <a class="el" href="_quantization_data_set_tests_8cpp.xhtml#af7f71af5c6c124222dd1c42c5df892f4">BOOST_AUTO_TEST_SUITE_END()</a>, and <a class="el" href="_quantization_data_set_8hpp_source.xhtml#l00029">QuantizationDataSet::IsEmpty()</a>.</p>
<div class="fragment"><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;{</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    std::map&lt;int, std::vector&lt;float&gt;&gt; csvData;</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    csvData.insert(std::pair&lt;<span class="keywordtype">int</span>, std::vector&lt;float&gt;&gt;(0, { 0.111111f, 0.222222f, 0.333333f }));</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    csvData.insert(std::pair&lt;<span class="keywordtype">int</span>, std::vector&lt;float&gt;&gt;(1, { 0.444444f, 0.555555f, 0.666666f }));</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    csvData.insert(std::pair&lt;<span class="keywordtype">int</span>, std::vector&lt;float&gt;&gt;(2, { 0.777777f, 0.888888f, 0.999999f }));</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    std::string myCsvFile = CsvTestHelper::CreateTempCsvFile(csvData);</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    <a class="code" href="classarmnn_quantizer_1_1_quantization_data_set.xhtml">QuantizationDataSet</a> dataSet(myCsvFile);</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    BOOST_TEST(!dataSet.IsEmpty());</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    <span class="keywordtype">int</span> csvRow = 0;</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    <span class="keywordflow">for</span>(<a class="code" href="classarmnn_quantizer_1_1_quantization_input.xhtml">armnnQuantizer::QuantizationInput</a> input : dataSet)</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    {</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;        BOOST_TEST(input.GetPassId() == csvRow);</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;        BOOST_TEST(input.GetLayerBindingIds().size() == 1);</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;        BOOST_TEST(input.GetLayerBindingIds()[0] == 0);</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;        BOOST_TEST(input.GetDataForEntry(0).size() == 3);</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;        <span class="comment">// Check that QuantizationInput data for binding ID 0 corresponds to float values</span></div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;        <span class="comment">// used for populating the CSV file using by QuantizationDataSet</span></div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;        BOOST_TEST(input.GetDataForEntry(0).at(0) == csvData.at(csvRow).at(0));</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;        BOOST_TEST(input.GetDataForEntry(0).at(1) == csvData.at(csvRow).at(1));</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;        BOOST_TEST(input.GetDataForEntry(0).at(2) == csvData.at(csvRow).at(2));</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;        ++csvRow;</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    }</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;}</div><div class="ttc" id="classarmnn_quantizer_1_1_quantization_data_set_xhtml"><div class="ttname"><a href="classarmnn_quantizer_1_1_quantization_data_set.xhtml">armnnQuantizer::QuantizationDataSet</a></div><div class="ttdoc">QuantizationDataSet is a structure which is created after parsing a quantization CSV file...</div><div class="ttdef"><b>Definition:</b> <a href="_quantization_data_set_8hpp_source.xhtml#l00018">QuantizationDataSet.hpp:18</a></div></div>
<div class="ttc" id="classarmnn_quantizer_1_1_quantization_input_xhtml"><div class="ttname"><a href="classarmnn_quantizer_1_1_quantization_input.xhtml">armnnQuantizer::QuantizationInput</a></div><div class="ttdoc">QuantizationInput for specific pass ID, can list a corresponding raw data file for each LayerBindingI...</div><div class="ttdef"><b>Definition:</b> <a href="_quantization_input_8hpp_source.xhtml#l00016">QuantizationInput.hpp:16</a></div></div>
</div><!-- fragment -->
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.xhtml">src</a></li><li class="navelem"><a class="el" href="dir_0de8a5774692585e465aba8075a97653.xhtml">armnnQuantizer</a></li><li class="navelem"><a class="el" href="dir_3709aa41a3b61b199034060afb4293ad.xhtml">test</a></li><li class="navelem"><a class="el" href="_quantization_data_set_tests_8cpp.xhtml">QuantizationDataSetTests.cpp</a></li>
    <li class="footer">Generated on Fri Mar 13 2020 16:09:14 for ArmNN by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
  </ul>
</div>
</body>
</html>
