forked from netty/netty
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add unit test for HpackDynamicTable. (netty#10389)
Motivation: `HpackDynamicTable` needs some test cases to ensure bug-free. Modification: Add unit test for `HpackDynamicTable`. Result: Improve test coverage slightly.
- Loading branch information
Showing
1 changed file
with
106 additions
and
0 deletions.
There are no files selected for viewing
106 changes: 106 additions & 0 deletions
106
codec-http2/src/test/java/io/netty/handler/codec/http2/HpackDynamicTableTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
/* | ||
* Copyright 2020 The Netty Project | ||
* | ||
* The Netty Project licenses this file to you under the Apache License, version 2.0 (the | ||
* "License"); you may not use this file except in compliance with the License. You may obtain a | ||
* copy of the License at: | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software distributed under the License | ||
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express | ||
* or implied. See the License for the specific language governing permissions and limitations under | ||
* the License. | ||
*/ | ||
|
||
package io.netty.handler.codec.http2; | ||
|
||
import static org.junit.Assert.assertEquals; | ||
import static org.junit.Assert.assertNull; | ||
import static org.junit.Assert.fail; | ||
|
||
import org.junit.Test; | ||
|
||
public class HpackDynamicTableTest { | ||
|
||
@Test | ||
public void testLength() { | ||
HpackDynamicTable table = new HpackDynamicTable(100); | ||
assertEquals(0, table.length()); | ||
HpackHeaderField entry = new HpackHeaderField("foo", "bar"); | ||
table.add(entry); | ||
assertEquals(1, table.length()); | ||
table.clear(); | ||
assertEquals(0, table.length()); | ||
} | ||
|
||
@Test | ||
public void testSize() { | ||
HpackDynamicTable table = new HpackDynamicTable(100); | ||
assertEquals(0, table.size()); | ||
HpackHeaderField entry = new HpackHeaderField("foo", "bar"); | ||
table.add(entry); | ||
assertEquals(entry.size(), table.size()); | ||
table.clear(); | ||
assertEquals(0, table.size()); | ||
} | ||
|
||
@Test | ||
public void testGetEntry() { | ||
HpackDynamicTable table = new HpackDynamicTable(100); | ||
HpackHeaderField entry = new HpackHeaderField("foo", "bar"); | ||
table.add(entry); | ||
assertEquals(entry, table.getEntry(1)); | ||
table.clear(); | ||
try { | ||
table.getEntry(1); | ||
fail(); | ||
} catch (IndexOutOfBoundsException e) { | ||
//success | ||
} | ||
} | ||
|
||
@Test(expected = IndexOutOfBoundsException.class) | ||
public void testGetEntryExceptionally() { | ||
HpackDynamicTable table = new HpackDynamicTable(1); | ||
table.getEntry(1); | ||
} | ||
|
||
@Test | ||
public void testRemove() { | ||
HpackDynamicTable table = new HpackDynamicTable(100); | ||
assertNull(table.remove()); | ||
HpackHeaderField entry1 = new HpackHeaderField("foo", "bar"); | ||
HpackHeaderField entry2 = new HpackHeaderField("hello", "world"); | ||
table.add(entry1); | ||
table.add(entry2); | ||
assertEquals(entry1, table.remove()); | ||
assertEquals(entry2, table.getEntry(1)); | ||
assertEquals(1, table.length()); | ||
assertEquals(entry2.size(), table.size()); | ||
} | ||
|
||
@Test | ||
public void testSetCapacity() { | ||
HpackHeaderField entry1 = new HpackHeaderField("foo", "bar"); | ||
HpackHeaderField entry2 = new HpackHeaderField("hello", "world"); | ||
final int size1 = entry1.size(); | ||
final int size2 = entry2.size(); | ||
HpackDynamicTable table = new HpackDynamicTable(size1 + size2); | ||
table.add(entry1); | ||
table.add(entry2); | ||
assertEquals(2, table.length()); | ||
assertEquals(size1 + size2, table.size()); | ||
table.setCapacity((size1 + size2) * 2); //larger capacity | ||
assertEquals(2, table.length()); | ||
assertEquals(size1 + size2, table.size()); | ||
table.setCapacity(size2); //smaller capacity | ||
//entry1 will be removed | ||
assertEquals(1, table.length()); | ||
assertEquals(size2, table.size()); | ||
assertEquals(entry2, table.getEntry(1)); | ||
table.setCapacity(0); //clear all | ||
assertEquals(0, table.length()); | ||
assertEquals(0, table.size()); | ||
} | ||
} |