<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>iceberg-cpp: iceberg::DateProjectionTest Class 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="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>
<link href="doxygen.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 id="projectrow">
  <td id="projectalign">
   <div id="projectname">iceberg-cpp
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- 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">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><b>iceberg</b></li><li class="navelem"><a class="el" href="classiceberg_1_1DateProjectionTest.html">DateProjectionTest</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="classiceberg_1_1DateProjectionTest-members.html">List of all members</a>  </div>
  <div class="headertitle"><div class="title">iceberg::DateProjectionTest Class Reference</div></div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Inheritance diagram for iceberg::DateProjectionTest:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classiceberg_1_1DateProjectionTest.png" alt=""/>
 </div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a54a83f489753277ba68597d0a51eb9a4" id="r_a54a83f489753277ba68597d0a51eb9a4"><td class="memItemLeft" align="right" valign="top"><a id="a54a83f489753277ba68597d0a51eb9a4" name="a54a83f489753277ba68597d0a51eb9a4"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>AssertProjectionStrict</b> (const <a class="el" href="classiceberg_1_1PartitionSpec.html">PartitionSpec</a> &amp;spec, const <a class="el" href="classiceberg_1_1Schema.html">Schema</a> &amp;schema, const std::shared_ptr&lt; <a class="el" href="classiceberg_1_1Expression.html">Expression</a> &gt; &amp;filter, <a class="el" href="classiceberg_1_1Expression.html#a433076bdc34ce0b6d359313c6c7b8a9c">Expression::Operation</a> expected_op)</td></tr>
<tr class="separator:a54a83f489753277ba68597d0a51eb9a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8ef2d0b369e078dc2a63228cc26350d7" id="r_a8ef2d0b369e078dc2a63228cc26350d7"><td class="memItemLeft" align="right" valign="top"><a id="a8ef2d0b369e078dc2a63228cc26350d7" name="a8ef2d0b369e078dc2a63228cc26350d7"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>AssertProjectionInclusive</b> (const <a class="el" href="classiceberg_1_1PartitionSpec.html">PartitionSpec</a> &amp;spec, const <a class="el" href="classiceberg_1_1Schema.html">Schema</a> &amp;schema, const std::shared_ptr&lt; <a class="el" href="classiceberg_1_1Expression.html">Expression</a> &gt; &amp;filter, <a class="el" href="classiceberg_1_1Expression.html#a433076bdc34ce0b6d359313c6c7b8a9c">Expression::Operation</a> expected_op)</td></tr>
<tr class="separator:a8ef2d0b369e078dc2a63228cc26350d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>iceberg/test/<b>projections_test.cc</b></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
</small></address>
</body>
</html>
