mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
add tests for Disposer having identity semantics
GitOrigin-RevId: c7edb3085efc28089f1803dbc4e707d976637104
This commit is contained in:
committed by
intellij-monorepo-bot
parent
be5d91fc62
commit
628ac735ca
@@ -6,6 +6,7 @@ import com.intellij.openapi.diagnostic.DefaultLogger;
|
||||
import com.intellij.openapi.progress.ProcessCanceledException;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.testFramework.LeakHunter;
|
||||
import com.intellij.testFramework.UsefulTestCase;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.concurrency.SequentialTaskExecutor;
|
||||
import junit.framework.TestCase;
|
||||
@@ -467,4 +468,105 @@ public class DisposerTest extends TestCase {
|
||||
LeakHunter.checkLeak(Disposer.getTree(), MyDisposable.class);
|
||||
}
|
||||
}
|
||||
|
||||
public void testDisposerMustHaveIdentitySemanticsForChildren() {
|
||||
List<Disposable> run = new ArrayList<>();
|
||||
Disposable disposable0 = new Disposable() {
|
||||
@Override
|
||||
public void dispose() {
|
||||
run.add(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
return true;
|
||||
}
|
||||
};
|
||||
Disposable disposable1 = new Disposable() {
|
||||
@Override
|
||||
public void dispose() {
|
||||
run.add(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
return true;
|
||||
}
|
||||
};
|
||||
assertEquals(disposable0, disposable1);
|
||||
|
||||
// for children
|
||||
Disposable parent = newDisposable();
|
||||
Disposer.register(parent, disposable0);
|
||||
Disposer.register(parent, disposable1);
|
||||
Disposer.dispose(parent);
|
||||
assertEquals(2, run.size());
|
||||
assertSame(disposable1, run.get(0));
|
||||
assertSame(disposable0, run.get(1));
|
||||
}
|
||||
|
||||
public void testDisposerMustHaveIdentitySemanticsForParent() {
|
||||
List<Disposable> run = new ArrayList<>();
|
||||
Disposable disposable0 = new Disposable() {
|
||||
@Override
|
||||
public void dispose() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
return true;
|
||||
}
|
||||
};
|
||||
Disposable disposable1 = new Disposable() {
|
||||
@Override
|
||||
public void dispose() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
return true;
|
||||
}
|
||||
};
|
||||
assertEquals(disposable0, disposable1);
|
||||
|
||||
Disposable child0 = new Disposable() {
|
||||
@Override
|
||||
public void dispose() {
|
||||
run.add(this);
|
||||
}
|
||||
};
|
||||
Disposable child1 = new Disposable() {
|
||||
@Override
|
||||
public void dispose() {
|
||||
run.add(this);
|
||||
}
|
||||
};
|
||||
Disposer.register(disposable0, child0);
|
||||
Disposer.register(disposable1, child1);
|
||||
Disposer.dispose(disposable0);
|
||||
assertSame(child0, UsefulTestCase.assertOneElement(run));
|
||||
run.clear();
|
||||
Disposer.dispose(disposable1);
|
||||
assertSame(child1, UsefulTestCase.assertOneElement(run));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user