mirror of
https://gitee.com/zhangsken/AndroidIDE.git
synced 2026-10-16 07:49:44 +08:00
Added test for read fields in ClassFileReader
This commit is contained in:
+42
-13
@@ -20,10 +20,10 @@ package com.itsaky.androidide.classfile
|
||||
import com.google.common.truth.Truth.assertThat
|
||||
import com.itsaky.androidide.classfile.constants.ClassConstant
|
||||
import com.itsaky.androidide.classfile.constants.Utf8Constant
|
||||
import java.io.File
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.junit.runners.JUnit4
|
||||
import java.io.File
|
||||
|
||||
/** @author Akash Yadav */
|
||||
@RunWith(JUnit4::class)
|
||||
@@ -41,9 +41,44 @@ class ClassFileReaderTest {
|
||||
assertThat(file).isNotNull()
|
||||
assertThat(file.version).isEqualTo(ClassFileVersion.JAVA_11)
|
||||
|
||||
assertThat(file.getName()).isEqualTo("io/github/rosemoe/sora/widget/CodeEditor")
|
||||
assertThat(file.getSuperClassName()).isEqualTo("android/view/View")
|
||||
checkBaseNames(file)
|
||||
checkInterfaces(file)
|
||||
checkFIelds(file)
|
||||
checkAccessFlags(file)
|
||||
}
|
||||
|
||||
private fun checkAccessFlags(file: IClassFile) {
|
||||
assertThat(file.accessFlags and ClassFileConstants.ACC_PUBLIC).isNotEqualTo(0)
|
||||
assertThat(file.accessFlags and ClassFileConstants.ACC_SUPER).isNotEqualTo(0)
|
||||
|
||||
assertThat(file.accessFlags and ClassFileConstants.ACC_ABSTRACT).isEqualTo(0)
|
||||
assertThat(file.accessFlags and ClassFileConstants.ACC_FINAL).isEqualTo(0)
|
||||
assertThat(file.accessFlags and ClassFileConstants.ACC_ANNOTATION).isEqualTo(0)
|
||||
assertThat(file.accessFlags and ClassFileConstants.ACC_ENUM).isEqualTo(0)
|
||||
assertThat(file.accessFlags and ClassFileConstants.ACC_INTERFACE).isEqualTo(0)
|
||||
assertThat(file.accessFlags and ClassFileConstants.ACC_MODULE).isEqualTo(0)
|
||||
assertThat(file.accessFlags and ClassFileConstants.ACC_SYNTHETIC).isEqualTo(0)
|
||||
}
|
||||
|
||||
private fun checkFIelds(file: IClassFile) {
|
||||
file.fields
|
||||
.firstOrNull { (file.constantPool[it.nameIndex] as Utf8Constant).content() == "mTextActionWindow" }
|
||||
.apply {
|
||||
assertThat(this).isNotNull()
|
||||
|
||||
val name = (file.constantPool[this!!.nameIndex] as Utf8Constant).content()
|
||||
assertThat(name).isEqualTo("mTextActionWindow")
|
||||
|
||||
val descriptor = (file.constantPool[this.descriptorIndex] as Utf8Constant).content()
|
||||
assertThat(descriptor).isEqualTo("Lio/github/rosemoe/sora/widget/component/EditorTextActionWindow;")
|
||||
|
||||
assertThat(this.accessFlags and ClassFileConstants.ACC_PROTECTED).isNotEqualTo(0)
|
||||
assertThat(this.accessFlags and ClassFileConstants.ACC_PRIVATE).isEqualTo(0)
|
||||
assertThat(this.accessFlags and ClassFileConstants.ACC_PUBLIC).isEqualTo(0)
|
||||
}
|
||||
}
|
||||
|
||||
private fun checkInterfaces(file: IClassFile) {
|
||||
file.interfaces
|
||||
.map { file.constantPool[it] }
|
||||
.filterIsInstance<ClassConstant>()
|
||||
@@ -60,16 +95,10 @@ class ClassFileReaderTest {
|
||||
"io/github/rosemoe/sora/text/LineRemoveListener"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
assertThat(file.accessFlags and ClassFileConstants.ACC_PUBLIC).isNotEqualTo(0)
|
||||
assertThat(file.accessFlags and ClassFileConstants.ACC_SUPER).isNotEqualTo(0)
|
||||
|
||||
assertThat(file.accessFlags and ClassFileConstants.ACC_ABSTRACT).isEqualTo(0)
|
||||
assertThat(file.accessFlags and ClassFileConstants.ACC_FINAL).isEqualTo(0)
|
||||
assertThat(file.accessFlags and ClassFileConstants.ACC_ANNOTATION).isEqualTo(0)
|
||||
assertThat(file.accessFlags and ClassFileConstants.ACC_ENUM).isEqualTo(0)
|
||||
assertThat(file.accessFlags and ClassFileConstants.ACC_INTERFACE).isEqualTo(0)
|
||||
assertThat(file.accessFlags and ClassFileConstants.ACC_MODULE).isEqualTo(0)
|
||||
assertThat(file.accessFlags and ClassFileConstants.ACC_SYNTHETIC).isEqualTo(0)
|
||||
private fun checkBaseNames(file: IClassFile) {
|
||||
assertThat(file.getName()).isEqualTo("io/github/rosemoe/sora/widget/CodeEditor")
|
||||
assertThat(file.getSuperClassName()).isEqualTo("android/view/View")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user