Testing LongStack Operations Implementation in Alibaba Arthas
This test suite validates the LongStack implementation in Arthas core utilities, focusing on stack operations and boundary behaviors. The tests verify push/pop operations, overflow handling, and edge cases for a long-based stack data structure.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
alibaba/arthas
core/src/test/java/com/taobao/arthas/core/util/LongStackTest.java
package com.taobao.arthas.core.util;
import org.junit.Assert;
import org.junit.Test;
import com.taobao.arthas.core.util.ThreadLocalWatch.LongStack;
/**
*
* @author hengyunabc 2019-11-20
*
*/
public class LongStackTest {
@Test
public void test() {
LongStack stack = new LongStack(100);
stack.push(1);
stack.push(2);
stack.push(3);
Assert.assertEquals(3, stack.pop());
Assert.assertEquals(2, stack.pop());
Assert.assertEquals(1, stack.pop());
}
@Test
public void test2() {
LongStack stack = new LongStack(100);
stack.push(1);
stack.push(2);
stack.push(3);
Assert.assertEquals(3, stack.pop());
Assert.assertEquals(2, stack.pop());
Assert.assertEquals(1, stack.pop());
Assert.assertEquals(0, stack.pop());
}
@Test
public void test3() {
LongStack stack = new LongStack(2);
stack.push(1);
stack.push(2);
stack.push(3);
Assert.assertEquals(3, stack.pop());
Assert.assertEquals(2, stack.pop());
Assert.assertEquals(3, stack.pop());
Assert.assertEquals(2, stack.pop());
}
@Test
public void test4() {
LongStack stack = new LongStack(2);
stack.push(1);
stack.push(2);
Assert.assertEquals(2, stack.pop());
Assert.assertEquals(1, stack.pop());
Assert.assertEquals(2, stack.pop());
Assert.assertEquals(1, stack.pop());
}
@Test
public void test5() {
LongStack stack = new LongStack(10);
stack.push(1);
stack.push(2);
stack.push(3);
stack.pop();
stack.pop();
stack.push(4);
stack.push(5);
stack.push(6);
stack.pop();
Assert.assertEquals(5, stack.pop());
Assert.assertEquals(4, stack.pop());
Assert.assertEquals(1, stack.pop());
Assert.assertEquals(0, stack.pop());
}
}