<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>Source code</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="source: package: org.apache.hadoop.hbase, class: TestCellUtil, class: TestCell">
<meta name="generator" content="javadoc/SourceToHTMLConverter">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
</head>
<body class="source-page">
<main role="main">
<div class="source-container">
<pre><span class="source-line-no">001</span><span id="line-1">/*</span>
<span class="source-line-no">002</span><span id="line-2"> * Licensed to the Apache Software Foundation (ASF) under one</span>
<span class="source-line-no">003</span><span id="line-3"> * or more contributor license agreements.  See the NOTICE file</span>
<span class="source-line-no">004</span><span id="line-4"> * distributed with this work for additional information</span>
<span class="source-line-no">005</span><span id="line-5"> * regarding copyright ownership.  The ASF licenses this file</span>
<span class="source-line-no">006</span><span id="line-6"> * to you under the Apache License, Version 2.0 (the</span>
<span class="source-line-no">007</span><span id="line-7"> * "License"); you may not use this file except in compliance</span>
<span class="source-line-no">008</span><span id="line-8"> * with the License.  You may obtain a copy of the License at</span>
<span class="source-line-no">009</span><span id="line-9"> *</span>
<span class="source-line-no">010</span><span id="line-10"> *     http://www.apache.org/licenses/LICENSE-2.0</span>
<span class="source-line-no">011</span><span id="line-11"> *</span>
<span class="source-line-no">012</span><span id="line-12"> * Unless required by applicable law or agreed to in writing, software</span>
<span class="source-line-no">013</span><span id="line-13"> * distributed under the License is distributed on an "AS IS" BASIS,</span>
<span class="source-line-no">014</span><span id="line-14"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
<span class="source-line-no">015</span><span id="line-15"> * See the License for the specific language governing permissions and</span>
<span class="source-line-no">016</span><span id="line-16"> * limitations under the License.</span>
<span class="source-line-no">017</span><span id="line-17"> */</span>
<span class="source-line-no">018</span><span id="line-18">package org.apache.hadoop.hbase;</span>
<span class="source-line-no">019</span><span id="line-19"></span>
<span class="source-line-no">020</span><span id="line-20">import static org.junit.Assert.assertEquals;</span>
<span class="source-line-no">021</span><span id="line-21">import static org.junit.Assert.assertFalse;</span>
<span class="source-line-no">022</span><span id="line-22">import static org.junit.Assert.assertTrue;</span>
<span class="source-line-no">023</span><span id="line-23">import static org.junit.Assert.fail;</span>
<span class="source-line-no">024</span><span id="line-24"></span>
<span class="source-line-no">025</span><span id="line-25">import java.io.IOException;</span>
<span class="source-line-no">026</span><span id="line-26">import java.math.BigDecimal;</span>
<span class="source-line-no">027</span><span id="line-27">import java.nio.ByteBuffer;</span>
<span class="source-line-no">028</span><span id="line-28">import java.util.ArrayList;</span>
<span class="source-line-no">029</span><span id="line-29">import java.util.List;</span>
<span class="source-line-no">030</span><span id="line-30">import java.util.NavigableMap;</span>
<span class="source-line-no">031</span><span id="line-31">import java.util.TreeMap;</span>
<span class="source-line-no">032</span><span id="line-32">import org.apache.hadoop.hbase.testclassification.MiscTests;</span>
<span class="source-line-no">033</span><span id="line-33">import org.apache.hadoop.hbase.testclassification.SmallTests;</span>
<span class="source-line-no">034</span><span id="line-34">import org.apache.hadoop.hbase.util.Bytes;</span>
<span class="source-line-no">035</span><span id="line-35">import org.junit.Assert;</span>
<span class="source-line-no">036</span><span id="line-36">import org.junit.ClassRule;</span>
<span class="source-line-no">037</span><span id="line-37">import org.junit.Test;</span>
<span class="source-line-no">038</span><span id="line-38">import org.junit.experimental.categories.Category;</span>
<span class="source-line-no">039</span><span id="line-39">import org.mockito.Mockito;</span>
<span class="source-line-no">040</span><span id="line-40"></span>
<span class="source-line-no">041</span><span id="line-41">@Category({ MiscTests.class, SmallTests.class })</span>
<span class="source-line-no">042</span><span id="line-42">public class TestCellUtil {</span>
<span class="source-line-no">043</span><span id="line-43">  @ClassRule</span>
<span class="source-line-no">044</span><span id="line-44">  public static final HBaseClassTestRule CLASS_RULE =</span>
<span class="source-line-no">045</span><span id="line-45">    HBaseClassTestRule.forClass(TestCellUtil.class);</span>
<span class="source-line-no">046</span><span id="line-46"></span>
<span class="source-line-no">047</span><span id="line-47">  /**</span>
<span class="source-line-no">048</span><span id="line-48">   * CellScannable used in test. Returns a {@link TestCellScanner}</span>
<span class="source-line-no">049</span><span id="line-49">   */</span>
<span class="source-line-no">050</span><span id="line-50">  private static class TestCellScannable implements CellScannable {</span>
<span class="source-line-no">051</span><span id="line-51">    private final int cellsCount;</span>
<span class="source-line-no">052</span><span id="line-52"></span>
<span class="source-line-no">053</span><span id="line-53">    TestCellScannable(final int cellsCount) {</span>
<span class="source-line-no">054</span><span id="line-54">      this.cellsCount = cellsCount;</span>
<span class="source-line-no">055</span><span id="line-55">    }</span>
<span class="source-line-no">056</span><span id="line-56"></span>
<span class="source-line-no">057</span><span id="line-57">    @Override</span>
<span class="source-line-no">058</span><span id="line-58">    public CellScanner cellScanner() {</span>
<span class="source-line-no">059</span><span id="line-59">      return new TestCellScanner(this.cellsCount);</span>
<span class="source-line-no">060</span><span id="line-60">    }</span>
<span class="source-line-no">061</span><span id="line-61">  }</span>
<span class="source-line-no">062</span><span id="line-62"></span>
<span class="source-line-no">063</span><span id="line-63">  /**</span>
<span class="source-line-no">064</span><span id="line-64">   * CellScanner used in test.</span>
<span class="source-line-no">065</span><span id="line-65">   */</span>
<span class="source-line-no">066</span><span id="line-66">  private static class TestCellScanner implements CellScanner {</span>
<span class="source-line-no">067</span><span id="line-67">    private int count = 0;</span>
<span class="source-line-no">068</span><span id="line-68">    private Cell current = null;</span>
<span class="source-line-no">069</span><span id="line-69">    private final int cellsCount;</span>
<span class="source-line-no">070</span><span id="line-70"></span>
<span class="source-line-no">071</span><span id="line-71">    TestCellScanner(final int cellsCount) {</span>
<span class="source-line-no">072</span><span id="line-72">      this.cellsCount = cellsCount;</span>
<span class="source-line-no">073</span><span id="line-73">    }</span>
<span class="source-line-no">074</span><span id="line-74"></span>
<span class="source-line-no">075</span><span id="line-75">    @Override</span>
<span class="source-line-no">076</span><span id="line-76">    public Cell current() {</span>
<span class="source-line-no">077</span><span id="line-77">      return this.current;</span>
<span class="source-line-no">078</span><span id="line-78">    }</span>
<span class="source-line-no">079</span><span id="line-79"></span>
<span class="source-line-no">080</span><span id="line-80">    @Override</span>
<span class="source-line-no">081</span><span id="line-81">    public boolean advance() {</span>
<span class="source-line-no">082</span><span id="line-82">      if (this.count &lt; cellsCount) {</span>
<span class="source-line-no">083</span><span id="line-83">        this.current = new TestCell(this.count);</span>
<span class="source-line-no">084</span><span id="line-84">        this.count++;</span>
<span class="source-line-no">085</span><span id="line-85">        return true;</span>
<span class="source-line-no">086</span><span id="line-86">      }</span>
<span class="source-line-no">087</span><span id="line-87">      return false;</span>
<span class="source-line-no">088</span><span id="line-88">    }</span>
<span class="source-line-no">089</span><span id="line-89">  }</span>
<span class="source-line-no">090</span><span id="line-90"></span>
<span class="source-line-no">091</span><span id="line-91">  /**</span>
<span class="source-line-no">092</span><span id="line-92">   * Cell used in test. Has row only.</span>
<span class="source-line-no">093</span><span id="line-93">   */</span>
<span class="source-line-no">094</span><span id="line-94">  private static class TestCell implements ExtendedCell {</span>
<span class="source-line-no">095</span><span id="line-95">    private final byte[] row;</span>
<span class="source-line-no">096</span><span id="line-96"></span>
<span class="source-line-no">097</span><span id="line-97">    TestCell(final int i) {</span>
<span class="source-line-no">098</span><span id="line-98">      this.row = Bytes.toBytes(i);</span>
<span class="source-line-no">099</span><span id="line-99">    }</span>
<span class="source-line-no">100</span><span id="line-100"></span>
<span class="source-line-no">101</span><span id="line-101">    @Override</span>
<span class="source-line-no">102</span><span id="line-102">    public byte[] getRowArray() {</span>
<span class="source-line-no">103</span><span id="line-103">      return this.row;</span>
<span class="source-line-no">104</span><span id="line-104">    }</span>
<span class="source-line-no">105</span><span id="line-105"></span>
<span class="source-line-no">106</span><span id="line-106">    @Override</span>
<span class="source-line-no">107</span><span id="line-107">    public int getRowOffset() {</span>
<span class="source-line-no">108</span><span id="line-108">      return 0;</span>
<span class="source-line-no">109</span><span id="line-109">    }</span>
<span class="source-line-no">110</span><span id="line-110"></span>
<span class="source-line-no">111</span><span id="line-111">    @Override</span>
<span class="source-line-no">112</span><span id="line-112">    public short getRowLength() {</span>
<span class="source-line-no">113</span><span id="line-113">      return (short) this.row.length;</span>
<span class="source-line-no">114</span><span id="line-114">    }</span>
<span class="source-line-no">115</span><span id="line-115"></span>
<span class="source-line-no">116</span><span id="line-116">    @Override</span>
<span class="source-line-no">117</span><span id="line-117">    public byte[] getFamilyArray() {</span>
<span class="source-line-no">118</span><span id="line-118">      return null;</span>
<span class="source-line-no">119</span><span id="line-119">    }</span>
<span class="source-line-no">120</span><span id="line-120"></span>
<span class="source-line-no">121</span><span id="line-121">    @Override</span>
<span class="source-line-no">122</span><span id="line-122">    public int getFamilyOffset() {</span>
<span class="source-line-no">123</span><span id="line-123">      return 0;</span>
<span class="source-line-no">124</span><span id="line-124">    }</span>
<span class="source-line-no">125</span><span id="line-125"></span>
<span class="source-line-no">126</span><span id="line-126">    @Override</span>
<span class="source-line-no">127</span><span id="line-127">    public byte getFamilyLength() {</span>
<span class="source-line-no">128</span><span id="line-128">      return 0;</span>
<span class="source-line-no">129</span><span id="line-129">    }</span>
<span class="source-line-no">130</span><span id="line-130"></span>
<span class="source-line-no">131</span><span id="line-131">    @Override</span>
<span class="source-line-no">132</span><span id="line-132">    public byte[] getQualifierArray() {</span>
<span class="source-line-no">133</span><span id="line-133">      return null;</span>
<span class="source-line-no">134</span><span id="line-134">    }</span>
<span class="source-line-no">135</span><span id="line-135"></span>
<span class="source-line-no">136</span><span id="line-136">    @Override</span>
<span class="source-line-no">137</span><span id="line-137">    public int getQualifierOffset() {</span>
<span class="source-line-no">138</span><span id="line-138">      return 0;</span>
<span class="source-line-no">139</span><span id="line-139">    }</span>
<span class="source-line-no">140</span><span id="line-140"></span>
<span class="source-line-no">141</span><span id="line-141">    @Override</span>
<span class="source-line-no">142</span><span id="line-142">    public int getQualifierLength() {</span>
<span class="source-line-no">143</span><span id="line-143">      return 0;</span>
<span class="source-line-no">144</span><span id="line-144">    }</span>
<span class="source-line-no">145</span><span id="line-145"></span>
<span class="source-line-no">146</span><span id="line-146">    @Override</span>
<span class="source-line-no">147</span><span id="line-147">    public long getTimestamp() {</span>
<span class="source-line-no">148</span><span id="line-148">      return 0;</span>
<span class="source-line-no">149</span><span id="line-149">    }</span>
<span class="source-line-no">150</span><span id="line-150"></span>
<span class="source-line-no">151</span><span id="line-151">    @Override</span>
<span class="source-line-no">152</span><span id="line-152">    public byte getTypeByte() {</span>
<span class="source-line-no">153</span><span id="line-153">      return 0;</span>
<span class="source-line-no">154</span><span id="line-154">    }</span>
<span class="source-line-no">155</span><span id="line-155"></span>
<span class="source-line-no">156</span><span id="line-156">    @Override</span>
<span class="source-line-no">157</span><span id="line-157">    public byte[] getValueArray() {</span>
<span class="source-line-no">158</span><span id="line-158">      return null;</span>
<span class="source-line-no">159</span><span id="line-159">    }</span>
<span class="source-line-no">160</span><span id="line-160"></span>
<span class="source-line-no">161</span><span id="line-161">    @Override</span>
<span class="source-line-no">162</span><span id="line-162">    public int getValueOffset() {</span>
<span class="source-line-no">163</span><span id="line-163">      return 0;</span>
<span class="source-line-no">164</span><span id="line-164">    }</span>
<span class="source-line-no">165</span><span id="line-165"></span>
<span class="source-line-no">166</span><span id="line-166">    @Override</span>
<span class="source-line-no">167</span><span id="line-167">    public int getValueLength() {</span>
<span class="source-line-no">168</span><span id="line-168">      return 0;</span>
<span class="source-line-no">169</span><span id="line-169">    }</span>
<span class="source-line-no">170</span><span id="line-170"></span>
<span class="source-line-no">171</span><span id="line-171">    @Override</span>
<span class="source-line-no">172</span><span id="line-172">    public int getSerializedSize() {</span>
<span class="source-line-no">173</span><span id="line-173">      return 0;</span>
<span class="source-line-no">174</span><span id="line-174">    }</span>
<span class="source-line-no">175</span><span id="line-175"></span>
<span class="source-line-no">176</span><span id="line-176">    @Override</span>
<span class="source-line-no">177</span><span id="line-177">    public byte[] getTagsArray() {</span>
<span class="source-line-no">178</span><span id="line-178">      return null;</span>
<span class="source-line-no">179</span><span id="line-179">    }</span>
<span class="source-line-no">180</span><span id="line-180"></span>
<span class="source-line-no">181</span><span id="line-181">    @Override</span>
<span class="source-line-no">182</span><span id="line-182">    public int getTagsOffset() {</span>
<span class="source-line-no">183</span><span id="line-183">      return 0;</span>
<span class="source-line-no">184</span><span id="line-184">    }</span>
<span class="source-line-no">185</span><span id="line-185"></span>
<span class="source-line-no">186</span><span id="line-186">    @Override</span>
<span class="source-line-no">187</span><span id="line-187">    public long getSequenceId() {</span>
<span class="source-line-no">188</span><span id="line-188">      return 0;</span>
<span class="source-line-no">189</span><span id="line-189">    }</span>
<span class="source-line-no">190</span><span id="line-190"></span>
<span class="source-line-no">191</span><span id="line-191">    @Override</span>
<span class="source-line-no">192</span><span id="line-192">    public int getTagsLength() {</span>
<span class="source-line-no">193</span><span id="line-193">      return 0;</span>
<span class="source-line-no">194</span><span id="line-194">    }</span>
<span class="source-line-no">195</span><span id="line-195"></span>
<span class="source-line-no">196</span><span id="line-196">    @Override</span>
<span class="source-line-no">197</span><span id="line-197">    public long heapSize() {</span>
<span class="source-line-no">198</span><span id="line-198">      return 0;</span>
<span class="source-line-no">199</span><span id="line-199">    }</span>
<span class="source-line-no">200</span><span id="line-200"></span>
<span class="source-line-no">201</span><span id="line-201">    @Override</span>
<span class="source-line-no">202</span><span id="line-202">    public void setSequenceId(long seqId) throws IOException {</span>
<span class="source-line-no">203</span><span id="line-203"></span>
<span class="source-line-no">204</span><span id="line-204">    }</span>
<span class="source-line-no">205</span><span id="line-205"></span>
<span class="source-line-no">206</span><span id="line-206">    @Override</span>
<span class="source-line-no">207</span><span id="line-207">    public void setTimestamp(long ts) throws IOException {</span>
<span class="source-line-no">208</span><span id="line-208"></span>
<span class="source-line-no">209</span><span id="line-209">    }</span>
<span class="source-line-no">210</span><span id="line-210"></span>
<span class="source-line-no">211</span><span id="line-211">    @Override</span>
<span class="source-line-no">212</span><span id="line-212">    public void setTimestamp(byte[] ts) throws IOException {</span>
<span class="source-line-no">213</span><span id="line-213">    }</span>
<span class="source-line-no">214</span><span id="line-214">  }</span>
<span class="source-line-no">215</span><span id="line-215"></span>
<span class="source-line-no">216</span><span id="line-216">  /**</span>
<span class="source-line-no">217</span><span id="line-217">   * Was overflowing if 100k or so lists of cellscanners to return.</span>
<span class="source-line-no">218</span><span id="line-218">   */</span>
<span class="source-line-no">219</span><span id="line-219">  @Test</span>
<span class="source-line-no">220</span><span id="line-220">  public void testCreateCellScannerOverflow() throws IOException {</span>
<span class="source-line-no">221</span><span id="line-221">    consume(doCreateCellScanner(1, 1), 1);</span>
<span class="source-line-no">222</span><span id="line-222">    consume(doCreateCellScanner(3, 0), 0);</span>
<span class="source-line-no">223</span><span id="line-223">    consume(doCreateCellScanner(3, 3), 3 * 3);</span>
<span class="source-line-no">224</span><span id="line-224">    consume(doCreateCellScanner(0, 1), 0);</span>
<span class="source-line-no">225</span><span id="line-225">    // Do big number. See HBASE-11813 for why.</span>
<span class="source-line-no">226</span><span id="line-226">    final int hundredK = 100000;</span>
<span class="source-line-no">227</span><span id="line-227">    consume(doCreateCellScanner(hundredK, 0), 0);</span>
<span class="source-line-no">228</span><span id="line-228">    consume(doCreateCellArray(1), 1);</span>
<span class="source-line-no">229</span><span id="line-229">    consume(doCreateCellArray(0), 0);</span>
<span class="source-line-no">230</span><span id="line-230">    consume(doCreateCellArray(3), 3);</span>
<span class="source-line-no">231</span><span id="line-231">    List&lt;CellScannable&gt; cells = new ArrayList&lt;&gt;(hundredK);</span>
<span class="source-line-no">232</span><span id="line-232">    for (int i = 0; i &lt; hundredK; i++) {</span>
<span class="source-line-no">233</span><span id="line-233">      cells.add(new TestCellScannable(1));</span>
<span class="source-line-no">234</span><span id="line-234">    }</span>
<span class="source-line-no">235</span><span id="line-235">    consume(CellUtil.createCellScanner(cells), hundredK);</span>
<span class="source-line-no">236</span><span id="line-236">    NavigableMap&lt;byte[], List&lt;Cell&gt;&gt; m = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);</span>
<span class="source-line-no">237</span><span id="line-237">    List&lt;Cell&gt; cellArray = new ArrayList&lt;&gt;(hundredK);</span>
<span class="source-line-no">238</span><span id="line-238">    for (int i = 0; i &lt; hundredK; i++) {</span>
<span class="source-line-no">239</span><span id="line-239">      cellArray.add(new TestCell(i));</span>
<span class="source-line-no">240</span><span id="line-240">    }</span>
<span class="source-line-no">241</span><span id="line-241">    m.put(new byte[] { 'f' }, cellArray);</span>
<span class="source-line-no">242</span><span id="line-242">    consume(CellUtil.createCellScanner(m), hundredK);</span>
<span class="source-line-no">243</span><span id="line-243">  }</span>
<span class="source-line-no">244</span><span id="line-244"></span>
<span class="source-line-no">245</span><span id="line-245">  private CellScanner doCreateCellArray(final int itemsPerList) {</span>
<span class="source-line-no">246</span><span id="line-246">    Cell[] cells = new Cell[itemsPerList];</span>
<span class="source-line-no">247</span><span id="line-247">    for (int i = 0; i &lt; itemsPerList; i++) {</span>
<span class="source-line-no">248</span><span id="line-248">      cells[i] = new TestCell(i);</span>
<span class="source-line-no">249</span><span id="line-249">    }</span>
<span class="source-line-no">250</span><span id="line-250">    return CellUtil.createCellScanner(cells);</span>
<span class="source-line-no">251</span><span id="line-251">  }</span>
<span class="source-line-no">252</span><span id="line-252"></span>
<span class="source-line-no">253</span><span id="line-253">  private CellScanner doCreateCellScanner(final int listsCount, final int itemsPerList) {</span>
<span class="source-line-no">254</span><span id="line-254">    List&lt;CellScannable&gt; cells = new ArrayList&lt;&gt;(listsCount);</span>
<span class="source-line-no">255</span><span id="line-255">    for (int i = 0; i &lt; listsCount; i++) {</span>
<span class="source-line-no">256</span><span id="line-256">      CellScannable cs = new CellScannable() {</span>
<span class="source-line-no">257</span><span id="line-257">        @Override</span>
<span class="source-line-no">258</span><span id="line-258">        public CellScanner cellScanner() {</span>
<span class="source-line-no">259</span><span id="line-259">          return new TestCellScanner(itemsPerList);</span>
<span class="source-line-no">260</span><span id="line-260">        }</span>
<span class="source-line-no">261</span><span id="line-261">      };</span>
<span class="source-line-no">262</span><span id="line-262">      cells.add(cs);</span>
<span class="source-line-no">263</span><span id="line-263">    }</span>
<span class="source-line-no">264</span><span id="line-264">    return CellUtil.createCellScanner(cells);</span>
<span class="source-line-no">265</span><span id="line-265">  }</span>
<span class="source-line-no">266</span><span id="line-266"></span>
<span class="source-line-no">267</span><span id="line-267">  private void consume(final CellScanner scanner, final int expected) throws IOException {</span>
<span class="source-line-no">268</span><span id="line-268">    int count = 0;</span>
<span class="source-line-no">269</span><span id="line-269">    while (scanner.advance()) {</span>
<span class="source-line-no">270</span><span id="line-270">      count++;</span>
<span class="source-line-no">271</span><span id="line-271">    }</span>
<span class="source-line-no">272</span><span id="line-272">    Assert.assertEquals(expected, count);</span>
<span class="source-line-no">273</span><span id="line-273">  }</span>
<span class="source-line-no">274</span><span id="line-274"></span>
<span class="source-line-no">275</span><span id="line-275">  @Test</span>
<span class="source-line-no">276</span><span id="line-276">  public void testOverlappingKeys() {</span>
<span class="source-line-no">277</span><span id="line-277">    byte[] empty = HConstants.EMPTY_BYTE_ARRAY;</span>
<span class="source-line-no">278</span><span id="line-278">    byte[] a = Bytes.toBytes("a");</span>
<span class="source-line-no">279</span><span id="line-279">    byte[] b = Bytes.toBytes("b");</span>
<span class="source-line-no">280</span><span id="line-280">    byte[] c = Bytes.toBytes("c");</span>
<span class="source-line-no">281</span><span id="line-281">    byte[] d = Bytes.toBytes("d");</span>
<span class="source-line-no">282</span><span id="line-282"></span>
<span class="source-line-no">283</span><span id="line-283">    // overlaps</span>
<span class="source-line-no">284</span><span id="line-284">    Assert.assertTrue(PrivateCellUtil.overlappingKeys(a, b, a, b));</span>
<span class="source-line-no">285</span><span id="line-285">    Assert.assertTrue(PrivateCellUtil.overlappingKeys(a, c, a, b));</span>
<span class="source-line-no">286</span><span id="line-286">    Assert.assertTrue(PrivateCellUtil.overlappingKeys(a, b, a, c));</span>
<span class="source-line-no">287</span><span id="line-287">    Assert.assertTrue(PrivateCellUtil.overlappingKeys(b, c, a, c));</span>
<span class="source-line-no">288</span><span id="line-288">    Assert.assertTrue(PrivateCellUtil.overlappingKeys(a, c, b, c));</span>
<span class="source-line-no">289</span><span id="line-289">    Assert.assertTrue(PrivateCellUtil.overlappingKeys(a, d, b, c));</span>
<span class="source-line-no">290</span><span id="line-290">    Assert.assertTrue(PrivateCellUtil.overlappingKeys(b, c, a, d));</span>
<span class="source-line-no">291</span><span id="line-291"></span>
<span class="source-line-no">292</span><span id="line-292">    Assert.assertTrue(PrivateCellUtil.overlappingKeys(empty, b, a, b));</span>
<span class="source-line-no">293</span><span id="line-293">    Assert.assertTrue(PrivateCellUtil.overlappingKeys(empty, b, a, c));</span>
<span class="source-line-no">294</span><span id="line-294"></span>
<span class="source-line-no">295</span><span id="line-295">    Assert.assertTrue(PrivateCellUtil.overlappingKeys(a, b, empty, b));</span>
<span class="source-line-no">296</span><span id="line-296">    Assert.assertTrue(PrivateCellUtil.overlappingKeys(a, b, empty, c));</span>
<span class="source-line-no">297</span><span id="line-297"></span>
<span class="source-line-no">298</span><span id="line-298">    Assert.assertTrue(PrivateCellUtil.overlappingKeys(a, empty, a, b));</span>
<span class="source-line-no">299</span><span id="line-299">    Assert.assertTrue(PrivateCellUtil.overlappingKeys(a, empty, a, c));</span>
<span class="source-line-no">300</span><span id="line-300"></span>
<span class="source-line-no">301</span><span id="line-301">    Assert.assertTrue(PrivateCellUtil.overlappingKeys(a, b, empty, empty));</span>
<span class="source-line-no">302</span><span id="line-302">    Assert.assertTrue(PrivateCellUtil.overlappingKeys(empty, empty, a, b));</span>
<span class="source-line-no">303</span><span id="line-303"></span>
<span class="source-line-no">304</span><span id="line-304">    // non overlaps</span>
<span class="source-line-no">305</span><span id="line-305">    Assert.assertFalse(PrivateCellUtil.overlappingKeys(a, b, c, d));</span>
<span class="source-line-no">306</span><span id="line-306">    Assert.assertFalse(PrivateCellUtil.overlappingKeys(c, d, a, b));</span>
<span class="source-line-no">307</span><span id="line-307"></span>
<span class="source-line-no">308</span><span id="line-308">    Assert.assertFalse(PrivateCellUtil.overlappingKeys(b, c, c, d));</span>
<span class="source-line-no">309</span><span id="line-309">    Assert.assertFalse(PrivateCellUtil.overlappingKeys(b, c, c, empty));</span>
<span class="source-line-no">310</span><span id="line-310">    Assert.assertFalse(PrivateCellUtil.overlappingKeys(b, c, d, empty));</span>
<span class="source-line-no">311</span><span id="line-311">    Assert.assertFalse(PrivateCellUtil.overlappingKeys(c, d, b, c));</span>
<span class="source-line-no">312</span><span id="line-312">    Assert.assertFalse(PrivateCellUtil.overlappingKeys(c, empty, b, c));</span>
<span class="source-line-no">313</span><span id="line-313">    Assert.assertFalse(PrivateCellUtil.overlappingKeys(d, empty, b, c));</span>
<span class="source-line-no">314</span><span id="line-314"></span>
<span class="source-line-no">315</span><span id="line-315">    Assert.assertFalse(PrivateCellUtil.overlappingKeys(b, c, a, b));</span>
<span class="source-line-no">316</span><span id="line-316">    Assert.assertFalse(PrivateCellUtil.overlappingKeys(b, c, empty, b));</span>
<span class="source-line-no">317</span><span id="line-317">    Assert.assertFalse(PrivateCellUtil.overlappingKeys(b, c, empty, a));</span>
<span class="source-line-no">318</span><span id="line-318">    Assert.assertFalse(PrivateCellUtil.overlappingKeys(a, b, b, c));</span>
<span class="source-line-no">319</span><span id="line-319">    Assert.assertFalse(PrivateCellUtil.overlappingKeys(empty, b, b, c));</span>
<span class="source-line-no">320</span><span id="line-320">    Assert.assertFalse(PrivateCellUtil.overlappingKeys(empty, a, b, c));</span>
<span class="source-line-no">321</span><span id="line-321">  }</span>
<span class="source-line-no">322</span><span id="line-322"></span>
<span class="source-line-no">323</span><span id="line-323">  @Test</span>
<span class="source-line-no">324</span><span id="line-324">  public void testFindCommonPrefixInFlatKey() {</span>
<span class="source-line-no">325</span><span id="line-325">    // The whole key matching case</span>
<span class="source-line-no">326</span><span id="line-326">    KeyValue kv1 =</span>
<span class="source-line-no">327</span><span id="line-327">      new KeyValue(Bytes.toBytes("r1"), Bytes.toBytes("f1"), Bytes.toBytes("q1"), null);</span>
<span class="source-line-no">328</span><span id="line-328">    Assert.assertEquals(kv1.getKeyLength(),</span>
<span class="source-line-no">329</span><span id="line-329">      PrivateCellUtil.findCommonPrefixInFlatKey(kv1, kv1, true, true));</span>
<span class="source-line-no">330</span><span id="line-330">    Assert.assertEquals(kv1.getKeyLength(),</span>
<span class="source-line-no">331</span><span id="line-331">      PrivateCellUtil.findCommonPrefixInFlatKey(kv1, kv1, false, true));</span>
<span class="source-line-no">332</span><span id="line-332">    Assert.assertEquals(kv1.getKeyLength() - KeyValue.TIMESTAMP_TYPE_SIZE,</span>
<span class="source-line-no">333</span><span id="line-333">      PrivateCellUtil.findCommonPrefixInFlatKey(kv1, kv1, true, false));</span>
<span class="source-line-no">334</span><span id="line-334">    // The rk length itself mismatch</span>
<span class="source-line-no">335</span><span id="line-335">    KeyValue kv2 =</span>
<span class="source-line-no">336</span><span id="line-336">      new KeyValue(Bytes.toBytes("r12"), Bytes.toBytes("f1"), Bytes.toBytes("q1"), null);</span>
<span class="source-line-no">337</span><span id="line-337">    Assert.assertEquals(1, PrivateCellUtil.findCommonPrefixInFlatKey(kv1, kv2, true, true));</span>
<span class="source-line-no">338</span><span id="line-338">    // part of rk is same</span>
<span class="source-line-no">339</span><span id="line-339">    KeyValue kv3 =</span>
<span class="source-line-no">340</span><span id="line-340">      new KeyValue(Bytes.toBytes("r14"), Bytes.toBytes("f1"), Bytes.toBytes("q1"), null);</span>
<span class="source-line-no">341</span><span id="line-341">    Assert.assertEquals(KeyValue.ROW_LENGTH_SIZE + Bytes.toBytes("r1").length,</span>
<span class="source-line-no">342</span><span id="line-342">      PrivateCellUtil.findCommonPrefixInFlatKey(kv2, kv3, true, true));</span>
<span class="source-line-no">343</span><span id="line-343">    // entire rk is same but different cf name</span>
<span class="source-line-no">344</span><span id="line-344">    KeyValue kv4 =</span>
<span class="source-line-no">345</span><span id="line-345">      new KeyValue(Bytes.toBytes("r14"), Bytes.toBytes("f2"), Bytes.toBytes("q1"), null);</span>
<span class="source-line-no">346</span><span id="line-346">    Assert.assertEquals(</span>
<span class="source-line-no">347</span><span id="line-347">      KeyValue.ROW_LENGTH_SIZE + kv3.getRowLength() + KeyValue.FAMILY_LENGTH_SIZE</span>
<span class="source-line-no">348</span><span id="line-348">        + Bytes.toBytes("f").length,</span>
<span class="source-line-no">349</span><span id="line-349">      PrivateCellUtil.findCommonPrefixInFlatKey(kv3, kv4, false, true));</span>
<span class="source-line-no">350</span><span id="line-350">    // rk and family are same and part of qualifier</span>
<span class="source-line-no">351</span><span id="line-351">    KeyValue kv5 =</span>
<span class="source-line-no">352</span><span id="line-352">      new KeyValue(Bytes.toBytes("r14"), Bytes.toBytes("f2"), Bytes.toBytes("q123"), null);</span>
<span class="source-line-no">353</span><span id="line-353">    Assert.assertEquals(</span>
<span class="source-line-no">354</span><span id="line-354">      KeyValue.ROW_LENGTH_SIZE + kv3.getRowLength() + KeyValue.FAMILY_LENGTH_SIZE</span>
<span class="source-line-no">355</span><span id="line-355">        + kv4.getFamilyLength() + kv4.getQualifierLength(),</span>
<span class="source-line-no">356</span><span id="line-356">      PrivateCellUtil.findCommonPrefixInFlatKey(kv4, kv5, true, true));</span>
<span class="source-line-no">357</span><span id="line-357">    // rk, cf and q are same. ts differs</span>
<span class="source-line-no">358</span><span id="line-358">    KeyValue kv6 = new KeyValue(Bytes.toBytes("rk"), 1234L);</span>
<span class="source-line-no">359</span><span id="line-359">    KeyValue kv7 = new KeyValue(Bytes.toBytes("rk"), 1235L);</span>
<span class="source-line-no">360</span><span id="line-360">    // only last byte out of 8 ts bytes in ts part differs</span>
<span class="source-line-no">361</span><span id="line-361">    Assert.assertEquals(</span>
<span class="source-line-no">362</span><span id="line-362">      KeyValue.ROW_LENGTH_SIZE + kv6.getRowLength() + KeyValue.FAMILY_LENGTH_SIZE</span>
<span class="source-line-no">363</span><span id="line-363">        + kv6.getFamilyLength() + kv6.getQualifierLength() + 7,</span>
<span class="source-line-no">364</span><span id="line-364">      PrivateCellUtil.findCommonPrefixInFlatKey(kv6, kv7, true, true));</span>
<span class="source-line-no">365</span><span id="line-365">    // rk, cf, q and ts are same. Only type differs</span>
<span class="source-line-no">366</span><span id="line-366">    KeyValue kv8 = new KeyValue(Bytes.toBytes("rk"), 1234L, KeyValue.Type.Delete);</span>
<span class="source-line-no">367</span><span id="line-367">    Assert.assertEquals(</span>
<span class="source-line-no">368</span><span id="line-368">      KeyValue.ROW_LENGTH_SIZE + kv6.getRowLength() + KeyValue.FAMILY_LENGTH_SIZE</span>
<span class="source-line-no">369</span><span id="line-369">        + kv6.getFamilyLength() + kv6.getQualifierLength() + KeyValue.TIMESTAMP_SIZE,</span>
<span class="source-line-no">370</span><span id="line-370">      PrivateCellUtil.findCommonPrefixInFlatKey(kv6, kv8, true, true));</span>
<span class="source-line-no">371</span><span id="line-371">    // With out TS_TYPE check</span>
<span class="source-line-no">372</span><span id="line-372">    Assert.assertEquals(</span>
<span class="source-line-no">373</span><span id="line-373">      KeyValue.ROW_LENGTH_SIZE + kv6.getRowLength() + KeyValue.FAMILY_LENGTH_SIZE</span>
<span class="source-line-no">374</span><span id="line-374">        + kv6.getFamilyLength() + kv6.getQualifierLength(),</span>
<span class="source-line-no">375</span><span id="line-375">      PrivateCellUtil.findCommonPrefixInFlatKey(kv6, kv8, true, false));</span>
<span class="source-line-no">376</span><span id="line-376">  }</span>
<span class="source-line-no">377</span><span id="line-377"></span>
<span class="source-line-no">378</span><span id="line-378">  /**</span>
<span class="source-line-no">379</span><span id="line-379">   * Assert CellUtil makes Cell toStrings same way we do KeyValue toStrings.</span>
<span class="source-line-no">380</span><span id="line-380">   */</span>
<span class="source-line-no">381</span><span id="line-381">  @Test</span>
<span class="source-line-no">382</span><span id="line-382">  public void testToString() {</span>
<span class="source-line-no">383</span><span id="line-383">    byte[] row = Bytes.toBytes("row");</span>
<span class="source-line-no">384</span><span id="line-384">    long ts = 123L;</span>
<span class="source-line-no">385</span><span id="line-385">    // Make a KeyValue and a Cell and see if same toString result.</span>
<span class="source-line-no">386</span><span id="line-386">    KeyValue kv = new KeyValue(row, HConstants.EMPTY_BYTE_ARRAY, HConstants.EMPTY_BYTE_ARRAY, ts,</span>
<span class="source-line-no">387</span><span id="line-387">      KeyValue.Type.Minimum, HConstants.EMPTY_BYTE_ARRAY);</span>
<span class="source-line-no">388</span><span id="line-388">    Cell cell = ExtendedCellBuilderFactory.create(CellBuilderType.DEEP_COPY).setRow(row)</span>
<span class="source-line-no">389</span><span id="line-389">      .setFamily(HConstants.EMPTY_BYTE_ARRAY).setQualifier(HConstants.EMPTY_BYTE_ARRAY)</span>
<span class="source-line-no">390</span><span id="line-390">      .setTimestamp(ts).setType(KeyValue.Type.Minimum.getCode())</span>
<span class="source-line-no">391</span><span id="line-391">      .setValue(HConstants.EMPTY_BYTE_ARRAY).build();</span>
<span class="source-line-no">392</span><span id="line-392">    String cellToString = CellUtil.getCellKeyAsString(cell);</span>
<span class="source-line-no">393</span><span id="line-393">    assertEquals(kv.toString(), cellToString);</span>
<span class="source-line-no">394</span><span id="line-394">    // Do another w/ non-null family.</span>
<span class="source-line-no">395</span><span id="line-395">    byte[] f = new byte[] { 'f' };</span>
<span class="source-line-no">396</span><span id="line-396">    byte[] q = new byte[] { 'q' };</span>
<span class="source-line-no">397</span><span id="line-397">    kv = new KeyValue(row, f, q, ts, KeyValue.Type.Minimum, HConstants.EMPTY_BYTE_ARRAY);</span>
<span class="source-line-no">398</span><span id="line-398">    cell = ExtendedCellBuilderFactory.create(CellBuilderType.DEEP_COPY).setRow(row).setFamily(f)</span>
<span class="source-line-no">399</span><span id="line-399">      .setQualifier(q).setTimestamp(ts).setType(KeyValue.Type.Minimum.getCode())</span>
<span class="source-line-no">400</span><span id="line-400">      .setValue(HConstants.EMPTY_BYTE_ARRAY).build();</span>
<span class="source-line-no">401</span><span id="line-401">    cellToString = CellUtil.getCellKeyAsString(cell);</span>
<span class="source-line-no">402</span><span id="line-402">    assertEquals(kv.toString(), cellToString);</span>
<span class="source-line-no">403</span><span id="line-403">  }</span>
<span class="source-line-no">404</span><span id="line-404"></span>
<span class="source-line-no">405</span><span id="line-405">  @Test</span>
<span class="source-line-no">406</span><span id="line-406">  public void testToString1() {</span>
<span class="source-line-no">407</span><span id="line-407">    String row = "test.row";</span>
<span class="source-line-no">408</span><span id="line-408">    String family = "test.family";</span>
<span class="source-line-no">409</span><span id="line-409">    String qualifier = "test.qualifier";</span>
<span class="source-line-no">410</span><span id="line-410">    long timestamp = 42;</span>
<span class="source-line-no">411</span><span id="line-411">    KeyValue.Type type = KeyValue.Type.Put;</span>
<span class="source-line-no">412</span><span id="line-412">    String value = "test.value";</span>
<span class="source-line-no">413</span><span id="line-413">    long seqId = 1042;</span>
<span class="source-line-no">414</span><span id="line-414"></span>
<span class="source-line-no">415</span><span id="line-415">    Cell cell = ExtendedCellBuilderFactory.create(CellBuilderType.DEEP_COPY)</span>
<span class="source-line-no">416</span><span id="line-416">      .setRow(Bytes.toBytes(row)).setFamily(Bytes.toBytes(family))</span>
<span class="source-line-no">417</span><span id="line-417">      .setQualifier(Bytes.toBytes(qualifier)).setTimestamp(timestamp).setType(type.getCode())</span>
<span class="source-line-no">418</span><span id="line-418">      .setValue(Bytes.toBytes(value)).setSequenceId(seqId).build();</span>
<span class="source-line-no">419</span><span id="line-419"></span>
<span class="source-line-no">420</span><span id="line-420">    String nonVerbose = CellUtil.toString(cell, false);</span>
<span class="source-line-no">421</span><span id="line-421">    String verbose = CellUtil.toString(cell, true);</span>
<span class="source-line-no">422</span><span id="line-422"></span>
<span class="source-line-no">423</span><span id="line-423">    System.out.println("nonVerbose=" + nonVerbose);</span>
<span class="source-line-no">424</span><span id="line-424">    System.out.println("verbose=" + verbose);</span>
<span class="source-line-no">425</span><span id="line-425"></span>
<span class="source-line-no">426</span><span id="line-426">    Assert.assertEquals(String.format("%s/%s:%s/%d/%s/vlen=%s/seqid=%s", row, family, qualifier,</span>
<span class="source-line-no">427</span><span id="line-427">      timestamp, type.toString(), Bytes.toBytes(value).length, seqId), nonVerbose);</span>
<span class="source-line-no">428</span><span id="line-428"></span>
<span class="source-line-no">429</span><span id="line-429">    Assert.assertEquals(String.format("%s/%s:%s/%d/%s/vlen=%s/seqid=%s/%s", row, family, qualifier,</span>
<span class="source-line-no">430</span><span id="line-430">      timestamp, type.toString(), Bytes.toBytes(value).length, seqId, value), verbose);</span>
<span class="source-line-no">431</span><span id="line-431"></span>
<span class="source-line-no">432</span><span id="line-432">    // TODO: test with tags</span>
<span class="source-line-no">433</span><span id="line-433">  }</span>
<span class="source-line-no">434</span><span id="line-434"></span>
<span class="source-line-no">435</span><span id="line-435">  @Test</span>
<span class="source-line-no">436</span><span id="line-436">  public void testCloneCellFieldsFromByteBufferedCell() {</span>
<span class="source-line-no">437</span><span id="line-437">    byte[] r = Bytes.toBytes("row1");</span>
<span class="source-line-no">438</span><span id="line-438">    byte[] f = Bytes.toBytes("cf1");</span>
<span class="source-line-no">439</span><span id="line-439">    byte[] q = Bytes.toBytes("qual1");</span>
<span class="source-line-no">440</span><span id="line-440">    byte[] v = Bytes.toBytes("val1");</span>
<span class="source-line-no">441</span><span id="line-441">    byte[] tags = Bytes.toBytes("tag1");</span>
<span class="source-line-no">442</span><span id="line-442">    KeyValue kv =</span>
<span class="source-line-no">443</span><span id="line-443">      new KeyValue(r, f, q, 0, q.length, 1234L, KeyValue.Type.Put, v, 0, v.length, tags);</span>
<span class="source-line-no">444</span><span id="line-444">    ByteBuffer buffer = ByteBuffer.wrap(kv.getBuffer());</span>
<span class="source-line-no">445</span><span id="line-445">    ExtendedCell bbCell = new ByteBufferKeyValue(buffer, 0, buffer.remaining());</span>
<span class="source-line-no">446</span><span id="line-446">    byte[] rDest = CellUtil.cloneRow(bbCell);</span>
<span class="source-line-no">447</span><span id="line-447">    assertTrue(Bytes.equals(r, rDest));</span>
<span class="source-line-no">448</span><span id="line-448">    byte[] fDest = CellUtil.cloneFamily(bbCell);</span>
<span class="source-line-no">449</span><span id="line-449">    assertTrue(Bytes.equals(f, fDest));</span>
<span class="source-line-no">450</span><span id="line-450">    byte[] qDest = CellUtil.cloneQualifier(bbCell);</span>
<span class="source-line-no">451</span><span id="line-451">    assertTrue(Bytes.equals(q, qDest));</span>
<span class="source-line-no">452</span><span id="line-452">    byte[] vDest = CellUtil.cloneValue(bbCell);</span>
<span class="source-line-no">453</span><span id="line-453">    assertTrue(Bytes.equals(v, vDest));</span>
<span class="source-line-no">454</span><span id="line-454">    byte[] tDest = new byte[tags.length];</span>
<span class="source-line-no">455</span><span id="line-455">    PrivateCellUtil.copyTagsTo(bbCell, tDest, 0);</span>
<span class="source-line-no">456</span><span id="line-456">    assertTrue(Bytes.equals(tags, tDest));</span>
<span class="source-line-no">457</span><span id="line-457">  }</span>
<span class="source-line-no">458</span><span id="line-458"></span>
<span class="source-line-no">459</span><span id="line-459">  @Test</span>
<span class="source-line-no">460</span><span id="line-460">  public void testMatchingCellFieldsFromByteBufferedCell() {</span>
<span class="source-line-no">461</span><span id="line-461">    byte[] r = Bytes.toBytes("row1");</span>
<span class="source-line-no">462</span><span id="line-462">    byte[] f = Bytes.toBytes("cf1");</span>
<span class="source-line-no">463</span><span id="line-463">    byte[] q1 = Bytes.toBytes("qual1");</span>
<span class="source-line-no">464</span><span id="line-464">    byte[] q2 = Bytes.toBytes("qual2");</span>
<span class="source-line-no">465</span><span id="line-465">    byte[] v = Bytes.toBytes("val1");</span>
<span class="source-line-no">466</span><span id="line-466">    byte[] tags = Bytes.toBytes("tag1");</span>
<span class="source-line-no">467</span><span id="line-467">    KeyValue kv =</span>
<span class="source-line-no">468</span><span id="line-468">      new KeyValue(r, f, q1, 0, q1.length, 1234L, KeyValue.Type.Put, v, 0, v.length, tags);</span>
<span class="source-line-no">469</span><span id="line-469">    ByteBuffer buffer = ByteBuffer.wrap(kv.getBuffer());</span>
<span class="source-line-no">470</span><span id="line-470">    Cell bbCell1 = new ByteBufferKeyValue(buffer, 0, buffer.remaining());</span>
<span class="source-line-no">471</span><span id="line-471">    kv = new KeyValue(r, f, q2, 0, q2.length, 1234L, KeyValue.Type.Put, v, 0, v.length, tags);</span>
<span class="source-line-no">472</span><span id="line-472">    buffer = ByteBuffer.wrap(kv.getBuffer());</span>
<span class="source-line-no">473</span><span id="line-473">    Cell bbCell2 = new ByteBufferKeyValue(buffer, 0, buffer.remaining());</span>
<span class="source-line-no">474</span><span id="line-474">    assertTrue(CellUtil.matchingRows(bbCell1, bbCell2));</span>
<span class="source-line-no">475</span><span id="line-475">    assertTrue(CellUtil.matchingRows(kv, bbCell2));</span>
<span class="source-line-no">476</span><span id="line-476">    assertTrue(CellUtil.matchingRows(bbCell1, r));</span>
<span class="source-line-no">477</span><span id="line-477">    assertTrue(CellUtil.matchingFamily(bbCell1, bbCell2));</span>
<span class="source-line-no">478</span><span id="line-478">    assertTrue(CellUtil.matchingFamily(kv, bbCell2));</span>
<span class="source-line-no">479</span><span id="line-479">    assertTrue(CellUtil.matchingFamily(bbCell1, f));</span>
<span class="source-line-no">480</span><span id="line-480">    assertFalse(CellUtil.matchingQualifier(bbCell1, bbCell2));</span>
<span class="source-line-no">481</span><span id="line-481">    assertTrue(CellUtil.matchingQualifier(kv, bbCell2));</span>
<span class="source-line-no">482</span><span id="line-482">    assertTrue(CellUtil.matchingQualifier(bbCell1, q1));</span>
<span class="source-line-no">483</span><span id="line-483">    assertTrue(CellUtil.matchingQualifier(bbCell2, q2));</span>
<span class="source-line-no">484</span><span id="line-484">    assertTrue(CellUtil.matchingValue(bbCell1, bbCell2));</span>
<span class="source-line-no">485</span><span id="line-485">    assertTrue(CellUtil.matchingValue(kv, bbCell2));</span>
<span class="source-line-no">486</span><span id="line-486">    assertTrue(CellUtil.matchingValue(bbCell1, v));</span>
<span class="source-line-no">487</span><span id="line-487">    assertFalse(CellUtil.matchingColumn(bbCell1, bbCell2));</span>
<span class="source-line-no">488</span><span id="line-488">    assertTrue(CellUtil.matchingColumn(kv, bbCell2));</span>
<span class="source-line-no">489</span><span id="line-489">    assertTrue(CellUtil.matchingColumn(bbCell1, f, q1));</span>
<span class="source-line-no">490</span><span id="line-490">    assertTrue(CellUtil.matchingColumn(bbCell2, f, q2));</span>
<span class="source-line-no">491</span><span id="line-491">  }</span>
<span class="source-line-no">492</span><span id="line-492"></span>
<span class="source-line-no">493</span><span id="line-493">  @Test</span>
<span class="source-line-no">494</span><span id="line-494">  public void testCellFieldsAsPrimitiveTypesFromByteBufferedCell() {</span>
<span class="source-line-no">495</span><span id="line-495">    int ri = 123;</span>
<span class="source-line-no">496</span><span id="line-496">    byte[] r = Bytes.toBytes(ri);</span>
<span class="source-line-no">497</span><span id="line-497">    byte[] f = Bytes.toBytes("cf1");</span>
<span class="source-line-no">498</span><span id="line-498">    byte[] q = Bytes.toBytes("qual1");</span>
<span class="source-line-no">499</span><span id="line-499">    long vl = 10981L;</span>
<span class="source-line-no">500</span><span id="line-500">    byte[] v = Bytes.toBytes(vl);</span>
<span class="source-line-no">501</span><span id="line-501">    KeyValue kv = new KeyValue(r, f, q, v);</span>
<span class="source-line-no">502</span><span id="line-502">    ByteBuffer buffer = ByteBuffer.wrap(kv.getBuffer());</span>
<span class="source-line-no">503</span><span id="line-503">    Cell bbCell = new ByteBufferKeyValue(buffer, 0, buffer.remaining());</span>
<span class="source-line-no">504</span><span id="line-504">    assertEquals(ri, PrivateCellUtil.getRowAsInt(bbCell));</span>
<span class="source-line-no">505</span><span id="line-505">    assertEquals(vl, PrivateCellUtil.getValueAsLong(bbCell));</span>
<span class="source-line-no">506</span><span id="line-506">    double vd = 3005.5;</span>
<span class="source-line-no">507</span><span id="line-507">    v = Bytes.toBytes(vd);</span>
<span class="source-line-no">508</span><span id="line-508">    kv = new KeyValue(r, f, q, v);</span>
<span class="source-line-no">509</span><span id="line-509">    buffer = ByteBuffer.wrap(kv.getBuffer());</span>
<span class="source-line-no">510</span><span id="line-510">    bbCell = new ByteBufferKeyValue(buffer, 0, buffer.remaining());</span>
<span class="source-line-no">511</span><span id="line-511">    assertEquals(vd, PrivateCellUtil.getValueAsDouble(bbCell), 0.0);</span>
<span class="source-line-no">512</span><span id="line-512">    BigDecimal bd = new BigDecimal(9999);</span>
<span class="source-line-no">513</span><span id="line-513">    v = Bytes.toBytes(bd);</span>
<span class="source-line-no">514</span><span id="line-514">    kv = new KeyValue(r, f, q, v);</span>
<span class="source-line-no">515</span><span id="line-515">    buffer = ByteBuffer.wrap(kv.getBuffer());</span>
<span class="source-line-no">516</span><span id="line-516">    bbCell = new ByteBufferKeyValue(buffer, 0, buffer.remaining());</span>
<span class="source-line-no">517</span><span id="line-517">    assertEquals(bd, PrivateCellUtil.getValueAsBigDecimal(bbCell));</span>
<span class="source-line-no">518</span><span id="line-518">  }</span>
<span class="source-line-no">519</span><span id="line-519"></span>
<span class="source-line-no">520</span><span id="line-520">  @Test</span>
<span class="source-line-no">521</span><span id="line-521">  public void testGetType() {</span>
<span class="source-line-no">522</span><span id="line-522">    ExtendedCell c = Mockito.mock(ExtendedCell.class);</span>
<span class="source-line-no">523</span><span id="line-523">    Mockito.when(c.getType()).thenCallRealMethod();</span>
<span class="source-line-no">524</span><span id="line-524">    for (Cell.Type type : Cell.Type.values()) {</span>
<span class="source-line-no">525</span><span id="line-525">      Mockito.when(c.getTypeByte()).thenReturn(type.getCode());</span>
<span class="source-line-no">526</span><span id="line-526">      assertEquals(type, c.getType());</span>
<span class="source-line-no">527</span><span id="line-527">    }</span>
<span class="source-line-no">528</span><span id="line-528"></span>
<span class="source-line-no">529</span><span id="line-529">    try {</span>
<span class="source-line-no">530</span><span id="line-530">      Mockito.when(c.getTypeByte()).thenReturn(KeyValue.Type.Maximum.getCode());</span>
<span class="source-line-no">531</span><span id="line-531">      c.getType();</span>
<span class="source-line-no">532</span><span id="line-532">      fail("The code of Maximum can't be handled by Cell.Type");</span>
<span class="source-line-no">533</span><span id="line-533">    } catch (UnsupportedOperationException e) {</span>
<span class="source-line-no">534</span><span id="line-534">    }</span>
<span class="source-line-no">535</span><span id="line-535"></span>
<span class="source-line-no">536</span><span id="line-536">    try {</span>
<span class="source-line-no">537</span><span id="line-537">      Mockito.when(c.getTypeByte()).thenReturn(KeyValue.Type.Minimum.getCode());</span>
<span class="source-line-no">538</span><span id="line-538">      c.getType();</span>
<span class="source-line-no">539</span><span id="line-539">      fail("The code of Maximum can't be handled by Cell.Type");</span>
<span class="source-line-no">540</span><span id="line-540">    } catch (UnsupportedOperationException e) {</span>
<span class="source-line-no">541</span><span id="line-541">    }</span>
<span class="source-line-no">542</span><span id="line-542">  }</span>
<span class="source-line-no">543</span><span id="line-543">}</span>




























































</pre>
</div>
</main>
</body>
</html>
