Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
Hello UTS
提交
0877c9e2
H
Hello UTS
项目概览
DCloud
/
Hello UTS
通知
1598
Star
27
Fork
9
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
2
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
H
Hello UTS
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
2
Issue
2
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
0877c9e2
编写于
5月 22, 2024
作者:
WOSHIMAHAIFENG
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'dev' into 'alpha'
Dev See merge request
!8
上级
17d3dff2
0802e20f
变更
19
展开全部
隐藏空白更改
内联
并排
Showing
19 changed file
with
23700 addition
and
620 deletion
+23700
-620
pages/SyntaxCase/utsAndroid.uvue
pages/SyntaxCase/utsAndroid.uvue
+300
-187
pages/SyntaxCase/utsAndroid.vue
pages/SyntaxCase/utsAndroid.vue
+17
-1
pages/SystemAPI/SystemAPI.uvue
pages/SystemAPI/SystemAPI.uvue
+13
-1
uni_modules/uts-nativepage/utssdk/app-android/AndroidManifest.xml
...les/uts-nativepage/utssdk/app-android/AndroidManifest.xml
+7
-2
uni_modules/uts-nativepage/utssdk/app-android/config.json
uni_modules/uts-nativepage/utssdk/app-android/config.json
+3
-1
uni_modules/uts-nativepage/utssdk/app-android/index.uts
uni_modules/uts-nativepage/utssdk/app-android/index.uts
+86
-12
uni_modules/uts-nativepage/utssdk/app-android/libs/SayHello.jar
...dules/uts-nativepage/utssdk/app-android/libs/SayHello.jar
+0
-0
uni_modules/uts-nativepage/utssdk/app-android/res/drawable-nodpi/icon_short.png
...page/utssdk/app-android/res/drawable-nodpi/icon_short.png
+0
-0
uni_modules/uts-platform-api/utssdk/app-android/index.uts
uni_modules/uts-platform-api/utssdk/app-android/index.uts
+21
-0
uni_modules/uts-syntaxcase/utssdk/index.uts
uni_modules/uts-syntaxcase/utssdk/index.uts
+254
-109
uni_modules/uts-tests/utssdk/Date.uts
uni_modules/uts-tests/utssdk/Date.uts
+13
-0
uni_modules/uts-tests/utssdk/Error.uts
uni_modules/uts-tests/utssdk/Error.uts
+5
-0
uni_modules/uts-tests/utssdk/Global.uts
uni_modules/uts-tests/utssdk/Global.uts
+16
-0
uni_modules/uts-tests/utssdk/JSON.uts
uni_modules/uts-tests/utssdk/JSON.uts
+329
-297
uni_modules/uts-tests/utssdk/JSON_large.uts
uni_modules/uts-tests/utssdk/JSON_large.uts
+22547
-0
uni_modules/uts-tests/utssdk/Math.uts
uni_modules/uts-tests/utssdk/Math.uts
+11
-5
uni_modules/uts-tests/utssdk/UTSJSONObject.uts
uni_modules/uts-tests/utssdk/UTSJSONObject.uts
+44
-0
uni_modules/uts-tests/utssdk/console.uts
uni_modules/uts-tests/utssdk/console.uts
+21
-0
uni_modules/uts-tests/utssdk/index.uts
uni_modules/uts-tests/utssdk/index.uts
+13
-5
未找到文件。
pages/SyntaxCase/utsAndroid.uvue
浏览文件 @
0877c9e2
<template>
<!-- #ifdef APP-ANDROID -->
<!-- #ifdef APP -->
<scroll-view style="flex: 1">
<!-- #endif -->
<view>
<view class="uni-padding-wrap uni-common-mt">
<view class="uni-hello-text"> 逐一点击执行,观察测试反馈 </view>
...
...
@@ -18,6 +16,7 @@
<button @click="dispatchAsyncClick">任务分发测试</button>
<button @click="pathTestClick">路径转换测试</button>
<button @click="privacyStateClick">隐私协议状态测试</button>
<button @click="privacyStateCallBackClick">隐私协议回调测试</button>
<view class="uni-padding-wrap uni-common-mt">
<view class="uni-hello-text">
1. 当前页面已通过initAppLifecycle函数注册了生命周期监听。
...
...
@@ -42,229 +41,343 @@
</view>
<button @tap="getDeviceInfoClick">获取设备基础信息</button>
<button @tap="getFileProviderUriClick">使用外部应用访问私有文件</button>
<button @tap="activityCallback">注册activity 回调方法</button>
<view class="uni-padding-wrap uni-common-mt">
<view class="uni-hello-text">
点击注册activity 回调方法后,可以手动切换其他APP再返回,可在控制台和界面观察事件日志
</view>
</view>
<view class="uni-padding-wrap uni-common-mt">
<view class="text-box" scroll-y="true">
<text>{{ cbText }}</text>
</view>
</view>
<button @tap="unRegActivityCallback">取消注册activity 回调方法</button>
</view>
<!-- #ifdef APP -->
</scroll-view>
<!-- #endif -->
<!-- #endif -->
</template>
<script>
<!-- #ifdef APP-ANDROID -->
import {
getAppContextTest,
getUniActivityTest,
getJavaClassTest,
getAppTempPathTest,
typeofClickTest,
gotoSystemPermissionActivityTest,
arrayPermissionFlowTest,
singlePermissionFlowTest,
dispatchAsyncTest,
convert2AbsFullPathTest,
unRegLifecycle,
initAppLifecycle,
gotoCameraTake,
getDeviceInfoTest,
privacyStateTest,
} from '@/uni_modules/uts-platform-api'
import File from 'java.io.File';
import Intent from 'android.content.Intent';
import {
getAppContextTest,
getUniActivityTest,
getJavaClassTest,
getAppTempPathTest,
typeofClickTest,
gotoSystemPermissionActivityTest,
arrayPermissionFlowTest,
singlePermissionFlowTest,
dispatchAsyncTest,
convert2AbsFullPathTest,
unRegLifecycle,
initAppLifecycle,
gotoCameraTake,
getDeviceInfoTest,
privacyStateTest
} from '@/uni_modules/uts-platform-api'
// #ifdef APP-ANDROID
import {
UTSAcvitiyLifeCycleCallback,
UTSAcvitiyKeyEventCallback,
UTSActivityWindowCallback,
UTSActivityCallback,
UTSActivityComponentCallback,
onCallbackChange
} from '@/uni_modules/uts-syntaxcase'
// #endif
/**
* 测试在页面生命周期之外,使用api
*/
export default {
data() {
return {
text: '',
selectImage: '',
}
},
onLoad: function () {
let that = this
initAppLifecycle(function (eventLog) {
// 展示捕捉到的声明周期日志
let nextLine = that.text + eventLog
that.text = nextLine
let nextLineFlag = that.text + '\n'
that.text = nextLineFlag
})
},
methods: {
privacyStateClick() {
privacyStateTest(function (ret, desc) {
if (ret) {
uni.showToast({
title: '测试通过',
})
} else {
uni.showToast({
icon: 'none',
title: '失败:' + desc,
})
}
})
},
getDeviceInfoClick() {
this.text = getDeviceInfoTest()
},
testGoOtherActivity() {
var that = this
let ret = gotoCameraTake(function (file) {
// 展示捕捉到的声明周期日志
console.log(file)
that.selectImage = 'file://' + file
})
if (!ret) {
uni.showToast({
icon: 'none',
title: '测试失败',
})
}
},
testUnRegLifecycle() {
// 取消注册生命周期
unRegLifecycle()
},
getJavaClassClick() {
if (getJavaClassTest()) {
uni.showToast({
title: '测试通过'
})
} else {
uni.showToast({
icon: 'error',
title: '测试失败'
})
}
},
getAppContextClick() {
if (getAppContextTest()) {
uni.showToast({
title: '测试通过',
})
} else {
uni.showToast({
icon: 'error',
title: '测试失败',
})
}
},
import File from 'java.io.File';
import Intent from 'android.content.Intent';
getUniActivityClick() {
if (getUniActivityTest()) {
uni.showToast({
title: '测试通过',
})
} else
{
uni.showToast({
icon: 'error
',
title: '测试失败
',
})
/**
* 测试在页面生命周期之外,使用api
*/
export default {
data() {
return
{
text: '',
cbText: '
',
selectImage: '
',
callback: [] as Any[]
}
},
pathTestClick() {
if (convert2AbsFullPathTest()) {
uni.showToast({
title: '测试通过',
})
} else {
uni.showToast({
icon: 'error',
title: '测试失败',
})
}
unmounted() {
// #ifdef APP-ANDROID
this.unRegActivityCallback()
// #endif
},
getFileProviderUriClick() {
let file = new File(UTSAndroid.getResourcePath("static/logo.png"))
const uri = UTSAndroid.getFileProviderUri(file)
console.log("uri",uri.toString())
const intent = new Intent(Intent.ACTION_VIEW, uri)
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 添加权限标志
const context = UTSAndroid.getUniActivity()!;
context.startActivity(intent);
onLoad: function () {
let that = this
initAppLifecycle(function (eventLog) {
// 展示捕捉到的声明周期日志
let nextLine = that.text + eventLog
that.text = nextLine
let nextLineFlag = that.text + '\n'
that.text = nextLineFlag
})
},
getAppTempPathClick() {
if (getAppTempPathTest()) {
uni.showToast({
title: '测试通过',
methods: {
privacyStateClick() {
privacyStateTest(function (ret, desc) {
if (ret) {
uni.showToast({
title: '测试通过',
})
} else {
uni.showToast({
icon: 'none',
title: '失败:' + desc,
})
}
})
} else {
uni.showToast({
icon: 'error',
title: '测试失败',
},
privacyStateCallBackClick() {
let isAgree : boolean = true
const cb = (ret : PrivacyOption) => {
console.log('privacyStateCallBackTest->' + ret.isAgree)
if (ret.isAgree==isAgree) {
uni.showToast({
title: '测试通过'
})
} else {
uni.showToast({
icon: 'none',
title: '失败'
})
}
}
// 先重置用户同意状态
UTSAndroid.onPrivacyAgreeChange(cb)
UTSAndroid.setPrivacyAgree(isAgree)
UTSAndroid.offPrivacyAgreeChange(cb)
setTimeout(function () {
console.log('privacyStateCallBackTest->false' )
UTSAndroid.setPrivacyAgree(false)
}, 5000);
},
getDeviceInfoClick() {
this.text = getDeviceInfoTest()
},
testGoOtherActivity() {
var that = this
let ret = gotoCameraTake(function (file) {
// 展示捕捉到的声明周期日志
console.log(file)
that.selectImage = 'file://' + file
})
}
},
dispatchAsyncClick() {
dispatchAsyncTest(function (ret, desc) {
if (ret) {
if (!ret) {
uni.showToast({
icon: 'none',
title: '测试失败',
})
}
},
testUnRegLifecycle() {
// 取消注册生命周期
unRegLifecycle()
},
getJavaClassClick() {
if (getJavaClassTest()) {
uni.showToast({
title: '测试通过'
})
} else {
uni.showToast({
icon: 'error',
title: '测试失败'
})
}
},
getAppContextClick() {
if (getAppContextTest()) {
uni.showToast({
title: '测试通过',
})
} else {
uni.showToast({
icon: '
none
',
title: '
失败:' + desc
,
icon: '
error
',
title: '
测试失败'
,
})
}
})
},
typeofClick() {
if (typeofClickTest()) {
uni.showToast({
title: '测试通过',
})
} else {
uni.showToast({
icon: 'error',
title: '测试失败',
})
}
},
},
gotoSystemPermissionActivityClick() {
gotoSystemPermissionActivityTest()
},
arrayPermissionFlowClick() {
arrayPermissionFlowTest(function (ret, desc) {
if (ret) {
getUniActivityClick() {
if (getUniActivityTest()) {
uni.showToast({
icon: 'none',
title: '测试通过',
})
} else {
uni.showToast({
icon: '
none
',
title: '
失败:' + desc
,
icon: '
error
',
title: '
测试失败'
,
})
}
})
},
singlePermissionFlowClick() {
singlePermissionFlowTest(function (ret, desc) {
if (ret) {
},
pathTestClick() {
if (convert2AbsFullPathTest()) {
uni.showToast({
icon: 'none',
title: '测试通过',
})
} else {
uni.showToast({
icon: '
none
',
title: '
失败:' + desc
,
icon: '
error
',
title: '
测试失败'
,
})
}
})
},
getFileProviderUriClick() {
let file = new File(UTSAndroid.getResourcePath("static/logo.png"))
const uri = UTSAndroid.getFileProviderUri(file)
console.log("uri", uri.toString())
const intent = new Intent(Intent.ACTION_VIEW, uri)
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 添加权限标志
const context = UTSAndroid.getUniActivity()!;
context.startActivity(intent);
},
getAppTempPathClick() {
if (getAppTempPathTest()) {
uni.showToast({
title: '测试通过',
})
} else {
uni.showToast({
icon: 'error',
title: '测试失败',
})
}
},
dispatchAsyncClick() {
dispatchAsyncTest(function (ret, desc) {
if (ret) {
uni.showToast({
title: '测试通过',
})
} else {
uni.showToast({
icon: 'none',
title: '失败:' + desc,
})
}
})
},
typeofClick() {
if (typeofClickTest()) {
uni.showToast({
title: '测试通过',
})
} else {
uni.showToast({
icon: 'error',
title: '测试失败',
})
}
},
gotoSystemPermissionActivityClick() {
gotoSystemPermissionActivityTest()
},
arrayPermissionFlowClick() {
arrayPermissionFlowTest(function (ret, desc) {
if (ret) {
uni.showToast({
icon: 'none',
title: '测试通过',
})
} else {
uni.showToast({
icon: 'none',
title: '失败:' + desc,
})
}
})
},
singlePermissionFlowClick() {
singlePermissionFlowTest(function (ret, desc) {
if (ret) {
uni.showToast({
icon: 'none',
title: '测试通过',
})
} else {
uni.showToast({
icon: 'none',
title: '失败:' + desc,
})
}
})
},
// #ifdef APP-ANDROID
// #ifdef UNI-APP-X
activityCallback() {
var that = this
onCallbackChange(function (eventLog : string) {
// 展示捕捉到的声明周期日志
let nextLine = that.cbText + eventLog
that.cbText = nextLine
let nextLineFlag = that.cbText + '\n'
that.cbText = nextLineFlag
})
this.callback.push(new UTSAcvitiyLifeCycleCallback())
this.callback.push(new UTSActivityWindowCallback())
this.callback.push(new UTSAcvitiyKeyEventCallback())
this.callback.push(new UTSActivityCallback())
this.callback.push(new UTSActivityComponentCallback())
this.callback.forEach((value) => {
if (value instanceof UTSAcvitiyLifeCycleCallback) {
UTSAndroid.onActivityCallback(value)
}
if (value instanceof UTSActivityWindowCallback) {
UTSAndroid.onActivityCallback(value)
}
if (value instanceof UTSAcvitiyKeyEventCallback) {
UTSAndroid.onActivityCallback(value)
}
if (value instanceof UTSActivityCallback) {
UTSAndroid.onActivityCallback(value)
}
if (value instanceof UTSActivityComponentCallback) {
UTSAndroid.onActivityCallback(value)
}
})
},
unRegActivityCallback() {
this.callback.forEach((value) => {
if (value instanceof UTSAcvitiyLifeCycleCallback) {
UTSAndroid.offActivityCallback(value)
}
if (value instanceof UTSActivityWindowCallback) {
UTSAndroid.offActivityCallback(value)
}
if (value instanceof UTSAcvitiyKeyEventCallback) {
UTSAndroid.offActivityCallback(value)
}
if (value instanceof UTSActivityCallback) {
UTSAndroid.offActivityCallback(value)
}
if (value instanceof UTSActivityComponentCallback) {
UTSAndroid.offActivityCallback(value)
}
})
}
// #endif
// #endif
},
},
}
<!-- #endif -->
}
</script>
<style>
.testButton {
width: 100%;
}
</style>
.testButton {
width: 100%;
}
</style>
\ No newline at end of file
pages/SyntaxCase/utsAndroid.vue
浏览文件 @
0877c9e2
...
...
@@ -17,6 +17,7 @@
<button
@
click=
"dispatchAsyncClick"
>
任务分发测试
</button>
<button
@
click=
"pathTestClick"
>
路径转换测试
</button>
<button
@
click=
"privacyStateClick"
>
隐私协议状态测试
</button>
<button
@
click=
"privacyStateCallBackClick"
>
隐私协议回调测试
</button>
<view
class=
"uni-padding-wrap uni-common-mt"
>
<view
class=
"uni-hello-text"
>
1. 当前页面已通过initAppLifecycle函数注册了生命周期监听。
...
...
@@ -60,7 +61,8 @@
initAppLifecycle
,
gotoCameraTake
,
getDeviceInfoTest
,
privacyStateTest
privacyStateTest
,
privacyStateCallBackTest
}
from
'
@/uni_modules/uts-platform-api
'
/**
* 测试在页面生命周期之外,使用api
...
...
@@ -95,6 +97,20 @@
}
})
},
privacyStateCallBackClick
()
{
privacyStateCallBackTest
(
function
(
ret
,
desc
)
{
if
(
ret
)
{
uni
.
showToast
({
title
:
'
测试通过
'
})
}
else
{
uni
.
showToast
({
icon
:
'
none
'
,
title
:
'
失败:
'
+
desc
})
}
})
},
getDeviceInfoClick
(){
this
.
text
=
getDeviceInfoTest
()
},
...
...
pages/SystemAPI/SystemAPI.uvue
浏览文件 @
0877c9e2
...
...
@@ -18,7 +18,7 @@
</view>
</template>
<script lang="ts">
import { gotoDemoActivity
} from "@/uni_modules/uts-nativepage";
import { gotoDemoActivity
,sayHelloFromJar } from "@/uni_modules/uts-nativepage";
import { getBatteryInfo, GetBatteryInfoOptions } from "@/uni_modules/uts-getbatteryinfo";
type Page = {
...
...
@@ -66,6 +66,9 @@
pages: [{
name: "自定义activity(需自定义基座)",
function: "testGotoDemoActivity"
},{
name: "调用jar中的方法",
function: "testNativeJar"
}] as Page[]
}
] as ListItem[],
...
...
@@ -93,6 +96,8 @@
break
case 'testGotoDemoActivity':
this.testGotoDemoActivity()
case 'testNativeJar':
this.testNativeJar()
break
}
return
...
...
@@ -111,6 +116,13 @@
});
}
} as GetBatteryInfoOptions)
},
testNativeJar() {
let ret = sayHelloFromJar();
uni.showToast({
icon: 'none',
title: '来自jar中的返回值:' + ret
})
},
testGotoDemoActivity() {
let ret = gotoDemoActivity();
...
...
uni_modules/uts-nativepage/utssdk/app-android/AndroidManifest.xml
浏览文件 @
0877c9e2
...
...
@@ -18,8 +18,13 @@
android:resource=
"@xml/custom_accessibility_service_config"
/>
</service>
<service
android:name=
"uts.sdk.modules.utsNativepage.ForeService"
/>
<activity
android:name=
"uts.sdk.modules.utsNativepage.DemoActivity"
></activity>
<service
android:name=
"uts.sdk.modules.utsNativepage.ForeService"
android:exported=
"true"
/>
<activity
android:name=
"uts.sdk.modules.utsNativepage.DemoActivity"
android:exported=
"true"
>
<intent-filter>
<action
android:name=
"uts.sdk.modules.demo"
/>
<category
android:name=
"android.intent.category.DEFAULT"
/>
</intent-filter>
</activity>
<!--桌面widget组件注册-->
<receiver
android:name=
"uts.sdk.modules.utsNativepage.DoAppWidget"
...
...
uni_modules/uts-nativepage/utssdk/app-android/config.json
浏览文件 @
0877c9e2
{
"dependencies"
:
[
"androidx.recyclerview:recyclerview:1.0.0"
"androidx.recyclerview:recyclerview:1.0.0"
,
"androidx.core:core:1.10.1"
]
}
uni_modules/uts-nativepage/utssdk/app-android/index.uts
浏览文件 @
0877c9e2
...
...
@@ -16,6 +16,10 @@ import Build from 'android.os.Build';
import IBinder from 'android.os.IBinder';
import Toast from 'android.widget.Toast';
import ShortcutInfoCompat from 'androidx.core.content.pm.ShortcutInfoCompat'
import ShortcutManagerCompat from 'androidx.core.content.pm.ShortcutManagerCompat'
import IconCompat from 'androidx.core.graphics.drawable.IconCompat'
import Service from 'android.app.Service';
import System from 'java.lang.System';
...
...
@@ -27,18 +31,46 @@ import LayoutInflater from 'android.view.LayoutInflater';
import LinearLayoutManager from 'androidx.recyclerview.widget.LinearLayoutManager';
export {DoAppWidget} from "./DoAppWidget.uts"
import Application from 'android.app.Application';
import Log from 'android.util.Log';
import File from 'java.io.File';
import Uri from 'android.net.Uri';
export * from './CustomAccessibilityService.uts'
import SayHelloTest from 'com.test.sayhello.SayHelloTest'
export function sayHelloFromJar(): string {
// 这里的逻辑是为了判断 当前的自定义activity 是否注册了,并以此为条件判断是否是自定义基座
let hasXActivityIntegration = true
try{
let packageManager = UTSAndroid.getUniActivity()!.getPackageManager();
let intent = new Intent(UTSAndroid.getUniActivity(),DemoActivity().javaClass);
let resolveInfo = packageManager.queryIntentActivities(intent,0);
console.log(resolveInfo.size)
if(resolveInfo.size == 0){
hasXActivityIntegration = false;
}
}catch(e:Exception){
console.log(e);
hasXActivityIntegration = false;
}
if(!hasXActivityIntegration){
return "需要在自定义基座运行";
}
return SayHelloTest().say()
}
export class AppHookProxy implements UTSAndroidHookProxy {
override onCreate(application: Application) {
//当前应用是否 取得用户同意隐私协议
android.util.Log.d("AppHookProxy", "AppHookProxy--onCreate---")
if(UTSAndroid.isPrivacyAgree()) {
//onCreate 初始化三方SDK
android.util.Log.d("AppHookProxy", "AppHookProxy--onCreate---isPrivacyAgree")
}
//当前应用是否 取得用户同意隐私协议
Log.d("AppHookProxy", "AppHookProxy--onCreate---")
// 初始化快捷方式
initShortCut()
if(UTSAndroid.isPrivacyAgree()) {
//onCreate 初始化三方SDK
Log.d("AppHookProxy", "AppHookProxy--onCreate---isPrivacyAgree")
}
}
}
...
...
@@ -50,19 +82,19 @@ class ForeService extends Service {
super();
}
override onCreate():void {
super.onCreate();
override onCreate():void {
super.onCreate();
console.log("onCreate");
}
}
override onBind(_intent?: Intent): IBinder|null{
return null;
}
}
override onStartCommand(intent:Intent ,flags:Int ,startId:Int ):Int {
override onStartCommand(intent:Intent ,flags:Int ,startId:Int ):Int {
let mBuilder = new NotificationCompat.Builder(this,"uts-test");
let mBuilder = new NotificationCompat.Builder(this,"uts-test");
// 点击后让通知将消失
mBuilder.setAutoCancel(true)
...
...
@@ -321,6 +353,48 @@ class IntentRunable extends Runnable{
UTSAndroid.getUniActivity()!.startActivity(intent);
}
}
/**
* 给当前应用设置快捷方式
* 仅支持 android 7.1 以上版本,自定义基座查看
*/
function initShortCut() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N_MR1) {
console.log("桌面快捷方式 仅支持android 7.1 以上版本")
return;
}
// 注意 id 不能重复
let shortcutBuilder = ShortcutInfoCompat.Builder(UTSAndroid.getAppContext()!, "id1");
shortcutBuilder.setShortLabel("官网")
shortcutBuilder.setLongLabel("访问官网")
shortcutBuilder.setIcon(IconCompat.createWithResource(UTSAndroid.getAppContext()!, R.drawable.icon_short))
shortcutBuilder.setIntent(
new Intent(
Intent.ACTION_VIEW,
Uri.parse("https://dcloud.io/")
)
)
let shortcut = shortcutBuilder.build()
// 注意 id 不能重复
let shortcutBuilder2 = ShortcutInfoCompat.Builder(UTSAndroid.getAppContext()!, "id2");
shortcutBuilder2.setShortLabel("示例界面")
shortcutBuilder2.setLongLabel("打开示例界面,最多可以写25个字")
shortcutBuilder2.setIcon(IconCompat.createWithResource(UTSAndroid.getAppContext()!, R.drawable.icon_short))
shortcutBuilder2.setIntent(
new Intent(
"uts.sdk.modules.demo"
)
)
let shortcut2 = shortcutBuilder2.build()
// #ifdef UNI-APP-X
ShortcutManagerCompat.setDynamicShortcuts(UTSAndroid.getAppContext()!, [shortcut,shortcut2].toKotlinList())
// #endif
// #ifndef UNI-APP-X
console.log("当前示例仅支持uni-app x环境")
// #endif
}
@Suppress("DEPRECATION")
export function gotoDemoActivity():boolean {
...
...
uni_modules/uts-nativepage/utssdk/app-android/libs/SayHello.jar
0 → 100644
浏览文件 @
0877c9e2
文件已添加
uni_modules/uts-nativepage/utssdk/app-android/res/drawable-nodpi/icon_short.png
0 → 100644
浏览文件 @
0877c9e2
2.9 KB
uni_modules/uts-platform-api/utssdk/app-android/index.uts
浏览文件 @
0877c9e2
...
...
@@ -81,6 +81,27 @@ export function privacyStateTest(callback : (ret : boolean, desc : string) => vo
}
export function privacyStateCallBackTest(callback : (ret : boolean, desc : string) => void) {
let isAgree : boolean = true
const cb = (ret : PrivacyOption) => {
console.log('privacyStateCallBackTest->' + ret.isAgree)
if (ret.isAgree == isAgree) {
callback(true, "pass")
} else {
callback(false, "callback error")
}
}
// 先重置用户同意状态
UTSAndroid.onPrivacyAgreeChange(cb)
UTSAndroid.setPrivacyAgree(isAgree)
UTSAndroid.offPrivacyAgreeChange(cb)
setTimeout(function () {
console.log('privacyStateCallBackTest->false')
UTSAndroid.setPrivacyAgree(false)
}, 5000);
}
/**
* UTSAndroid.getAppTempPath 测试示例
*/
...
...
uni_modules/uts-syntaxcase/utssdk/index.uts
浏览文件 @
0877c9e2
import
{
RequestTask
,
SyncOptions
}
from
"./interface.uts"
;
import
{
log
}
from
"./utils.uts"
;
export
type
AsyncOptions
=
{
type
:
string
;
success
:
(
res
:
string
)
=>
void
;
fail
:
(
res
:
string
)
=>
void
;
complete
:
(
res
:
string
)
=>
void
;
type
:
string
;
success
:
(
res
:
string
)
=>
void
;
fail
:
(
res
:
string
)
=>
void
;
complete
:
(
res
:
string
)
=>
void
;
};
export
type
{
SyncOptions
SyncOptions
}
from
"./interface.uts"
;
type
SyntaxResult
=
{
name
:
string
name
:
string
};
type
SyncResult
=
{
msg
:
string
msg
:
string
}
/**
...
...
@@ -29,140 +29,285 @@ export const MAX = 100;
* @returns
*/
export
function
testSync
(
msg
:
string
)
:
SyncResult
{
console
.
log
(
"log test"
);
log
(
"log test1"
);
console
.
log
(
"log test"
);
log
(
"log test1"
);
const
res
:
SyncResult
=
{
msg
:
`hello ${msg}`
}
return
res
// return {
// msg: `hello ${msg}`,
// };
const
res
:
SyncResult
=
{
msg
:
`hello ${msg}`
}
return
res
// return {
// msg: `hello ${msg}`,
// };
}
/**
* 导出一个同步方法(触发了数组越界异常)
*/
export
function
testSyncError
()
{
const
arr
:
string
[]
=
[];
console
.
log
(
arr
[
1
]);
const
arr
:
string
[]
=
[];
console
.
log
(
arr
[
1
]);
}
/**
* 导出一个带callback的同步方法
* @param opts
*/
export
function
testSyncWithCallback
(
opts
:
AsyncOptions
)
:
SyntaxResult
{
if
(
opts
.
type
==
"success"
)
{
opts
.
success
(
"success"
);
}
else
{
opts
.
fail
(
"fail"
);
}
opts
.
complete
(
"complete"
);
const
res
:
SyntaxResult
=
{
name
:
"testSyncWithCallback"
}
return
res
;
// return { name: "testSyncWithCallback" };
if
(
opts
.
type
==
"success"
)
{
opts
.
success
(
"success"
);
}
else
{
opts
.
fail
(
"fail"
);
}
opts
.
complete
(
"complete"
);
const
res
:
SyntaxResult
=
{
name
:
"testSyncWithCallback"
}
return
res
;
// return { name: "testSyncWithCallback" };
}
async
function
testAwaitPromise
(
res
:
SyntaxResult
)
:
Promise
<
SyntaxResult
>
{
// #ifdef APP-ANDROID
return
await
new
Promise
(
function
(
resolve
:
(
res
:
SyntaxResult
)
=>
void
)
{
resolve
(
res
)
})
// #endif
// #ifndef APP-ANDROID
return
res
// #endif
// #ifdef APP-ANDROID
return
await
new
Promise
(
function
(
resolve
:
(
res
:
SyntaxResult
)
=>
void
)
{
resolve
(
res
)
})
// #endif
// #ifndef APP-ANDROID
return
res
// #endif
}
/**
* 导出一个异步方法
* @returns
*/
export
async
function
testAsync
(
opts
:
AsyncOptions
)
:
Promise
<
SyntaxResult
>
{
if
(
opts
.
type
==
"success"
)
{
opts
.
success
(
"success"
);
}
else
{
opts
.
fail
(
"fail"
);
}
opts
.
complete
(
"complete"
);
const
res
:
SyntaxResult
=
{
name
:
"testAsync"
}
return
await
testAwaitPromise
(
res
);
// return { name: "testAsync" };
}
export
async
function
testAsyncParam3
(
id
:
number
,
name
:
string
,
opts
:
AsyncOptions
)
:
Promise
<
SyntaxResult
>
{
console
.
log
(
"id"
,
id
,
"name"
,
name
)
if
(
opts
.
type
==
"success"
)
{
opts
.
success
(
"success"
);
}
else
{
opts
.
fail
(
"fail"
);
}
opts
.
complete
(
"complete"
);
const
res
:
SyntaxResult
=
{
name
:
"testUtsAsyncMulitParam"
}
return
await
testAwaitPromise
(
res
);
// return { name: "testAsync" };
}
if
(
opts
.
type
==
"success"
)
{
opts
.
success
(
"success"
);
}
else
{
opts
.
fail
(
"fail"
);
}
opts
.
complete
(
"complete"
);
const
res
:
SyntaxResult
=
{
name
:
"testAsync"
}
return
await
testAwaitPromise
(
res
);
// return { name: "testAsync" };
}
export
async
function
testAsyncParam3
(
id
:
number
,
name
:
string
,
opts
:
AsyncOptions
)
:
Promise
<
SyntaxResult
>
{
console
.
log
(
"id"
,
id
,
"name"
,
name
)
if
(
opts
.
type
==
"success"
)
{
opts
.
success
(
"success"
);
}
else
{
opts
.
fail
(
"fail"
);
}
opts
.
complete
(
"complete"
);
const
res
:
SyntaxResult
=
{
name
:
"testUtsAsyncMulitParam"
}
return
await
testAwaitPromise
(
res
);
// return { name: "testAsync" };
}
export
type
TestOptions
=
{
name
:
string
;
callback
:
(
res
:
string
)
=>
void
;
name
:
string
;
callback
:
(
res
:
string
)
=>
void
;
};
export
class
Test
{
id
:
number
;
name
:
string
;
static
type
:
string
=
"Test"
;
constructor
(
id
:
number
,
options
:
TestOptions
)
{
this
.
id
=
id
;
this
.
name
=
options
.
name
;
options
.
callback
(
"Test.constructor"
);
}
static
testClassStaticSyncWithCallback
(
opts
:
AsyncOptions
)
:
SyntaxResult
{
return
testSyncWithCallback
(
opts
);
}
static
async
testClassStaticAsync
(
opts
:
AsyncOptions
)
:
Promise
<
SyntaxResult
>
{
const
res
=
await
testAsync
(
opts
);
return
res
;
}
testClassSyncWithCallback
(
opts
:
AsyncOptions
)
:
SyntaxResult
{
return
testSyncWithCallback
(
opts
);
}
async
testClassAsync
(
opts
:
AsyncOptions
)
:
Promise
<
SyntaxResult
>
{
const
res
=
await
testAsync
(
opts
);
return
res
;
}
id
:
number
;
name
:
string
;
static
type
:
string
=
"Test"
;
constructor
(
id
:
number
,
options
:
TestOptions
)
{
this
.
id
=
id
;
this
.
name
=
options
.
name
;
options
.
callback
(
"Test.constructor"
);
}
static
testClassStaticSyncWithCallback
(
opts
:
AsyncOptions
)
:
SyntaxResult
{
return
testSyncWithCallback
(
opts
);
}
static
async
testClassStaticAsync
(
opts
:
AsyncOptions
)
:
Promise
<
SyntaxResult
>
{
const
res
=
await
testAsync
(
opts
);
return
res
;
}
testClassSyncWithCallback
(
opts
:
AsyncOptions
)
:
SyntaxResult
{
return
testSyncWithCallback
(
opts
);
}
async
testClassAsync
(
opts
:
AsyncOptions
)
:
Promise
<
SyntaxResult
>
{
const
res
=
await
testAsync
(
opts
);
return
res
;
}
}
class
RequestTaskImpl
implements
RequestTask
{
url
:
string
constructor
(
url
:
string
)
{
this
.
url
=
url
}
abort
()
:
RequestTask
{
return
this
}
onCallback
(
callback
:
(
res
:
string
)
=>
void
)
{
callback
(
"onCallback"
)
}
sync
(
options
:
SyncOptions
)
:
string
{
options
.
success
?
.
(
"success"
)
options
.
complete
?
.
(
"success"
)
return
"sync"
}
url
:
string
constructor
(
url
:
string
)
{
this
.
url
=
url
}
abort
()
:
RequestTask
{
return
this
}
onCallback
(
callback
:
(
res
:
string
)
=>
void
)
{
callback
(
"onCallback"
)
}
sync
(
options
:
SyncOptions
)
:
string
{
options
.
success
?
.
(
"success"
)
options
.
complete
?
.
(
"success"
)
return
"sync"
}
}
export
function
request
(
url
:
string
)
:
RequestTask
|
null
{
return
new
RequestTaskImpl
(
url
)
}
\ No newline at end of file
return
new
RequestTaskImpl
(
url
)
}
// #ifdef APP-ANDROID
// #ifdef UNI-APP-X
import
KeyEvent
from
'android.view.KeyEvent'
;
import
Configuration
from
'android.content.res.Configuration'
;
import
Bundle
from
'android.os.Bundle'
;
import
Menu
from
'android.view.Menu'
;
import
KeyboardShortcutGroup
from
'android.view.KeyboardShortcutGroup'
;
import
WindowManager
from
'android.view.WindowManager'
;
import
ActionMode
from
'android.view.ActionMode'
;
// export let onCallBackChange: (event: string) => void = (res) => {};
let
callback
:
(
eventLog
:
string
)
=>
void
=
(
res
)
=>
{
};
export
function
onCallbackChange
(
fn
:
(
eventLog
:
string
)
=>
void
)
{
callback
=
fn
}
export
class
UTSAcvitiyLifeCycleCallback
extends
UniActivityLifeCycleCallback
{
constructor
()
{
super
()
}
override
onCreate
(
params
:
UniActivityParams
,
savedInstanceState
:
Bundle
|
null
)
{
console
.
log
(
'UTSAcvitiyLifeCycle'
,
'onCreate'
,
savedInstanceState
)
callback
(
'onCreate'
)
}
override
onResume
(
params
:
UniActivityParams
)
{
console
.
log
(
'UTSAcvitiyLifeCycle'
,
'onResume'
,
params
)
callback
(
'onResume'
)
}
override
onPreResume
(
params
:
UniActivityParams
)
{
console
.
log
(
'UTSAcvitiyLifeCycle'
,
'onPreResume'
,
params
)
callback
(
'onPreResume'
)
}
override
onStart
(
params
:
UniActivityParams
)
{
console
.
log
(
'UTSAcvitiyLifeCycle'
,
'onStart'
,
params
)
callback
(
'onStart'
)
}
override
onPreStart
(
params
:
UniActivityParams
)
{
console
.
log
(
'UTSAcvitiyLifeCycle'
,
'onPreStart'
,
params
)
callback
(
'onPreStart'
)
}
}
export
class
UTSAcvitiyKeyEventCallback
extends
UniActivityKeyEventCallback
{
constructor
()
{
super
()
}
override
onKeyDown
(
params
:
UniActivityParams
,
keyCode
:
Int
,
event
:
KeyEvent
|
null
)
{
console
.
log
(
'UTSAcvitiyKeyEvent'
,
'onKeyDown'
,
params
,
keyCode
,
''
+
event
)
callback
(
'onKeyDown'
)
}
override
onPreKeyDown
(
params
:
UniActivityParams
,
keyCode
:
Int
,
event
:
KeyEvent
|
null
)
{
console
.
log
(
'UTSAcvitiyKeyEvent'
,
'onPreKeyDown'
,
params
,
keyCode
,
''
+
event
)
callback
(
'onPreKeyDown'
)
}
override
onKeyLongPress
(
params
:
UniActivityParams
,
keyCode
:
Int
,
event
:
KeyEvent
|
null
)
{
console
.
log
(
'UTSAcvitiyKeyEvent'
,
'onKeyLongPress'
,
params
,
keyCode
,
''
+
event
)
callback
(
'onKeyLongPress'
)
}
override
onPreKeyLongPress
(
params
:
UniActivityParams
,
keyCode
:
Int
,
event
:
KeyEvent
|
null
)
{
console
.
log
(
'UTSAcvitiyKeyEvent'
,
'onPreKeyLongPress'
,
params
,
keyCode
,
''
+
event
)
callback
(
'onPreKeyLongPress'
)
}
}
export
class
UTSActivityWindowCallback
extends
UniActivityWindowCallback
{
constructor
()
{
super
()
}
override
dispatchPreKeyEvent
(
params
:
UniActivityParams
,
event
:
KeyEvent
|
null
)
{
console
.
log
(
'UTSActivityWindowCallback'
,
'dispatchPreKeyEvent'
,
params
,
''
+
event
)
callback
(
'dispatchPreKeyEvent'
)
}
override
dispatchKeyEvent
(
params
:
UniActivityParams
,
event
:
KeyEvent
|
null
)
{
console
.
log
(
'UTSActivityWindowCallback'
,
'dispatchKeyEvent'
,
params
,
''
+
event
)
callback
(
'dispatchKeyEvent'
)
}
override
onWindowAttributesChanged
(
params
:
UniActivityParams
,
attrs
:
WindowManager
.
LayoutParams
)
{
console
.
log
(
'UTSActivityWindowCallback'
,
'onWindowAttributesChanged'
,
''
+
attrs
)
callback
(
'onWindowAttributesChanged'
)
}
override
onAttachedToWindow
(
params
:
UniActivityParams
)
{
console
.
log
(
'UTSActivityWindowCallback'
,
'onAttachedToWindow'
,
params
)
callback
(
'onAttachedToWindow'
)
}
override
onPanelClosed
(
params
:
UniActivityParams
,
featureId
:
Int
,
menu
:
Menu
)
{
console
.
log
(
'UTSActivityWindowCallback'
,
'onPanelClosed'
,
featureId
,
menu
)
callback
(
'onPanelClosed'
)
}
override
onWindowStartingActionMode
(
params
:
UniActivityParams
,
callback
:
ActionMode
.
Callback
|
null
)
{
console
.
log
(
'UTSActivityWindowCallback'
,
'onWindowStartingActionMode'
,
callback
)
callback
(
'onWindowStartingActionMode'
)
}
override
onProvideKeyboardShortcuts
(
params
:
UniActivityParams
,
data
:
MutableList
<
KeyboardShortcutGroup
>
|
null
,
menu
:
Menu
|
null
,
deviceId
:
Int
)
{
console
.
log
(
'UTSActivityWindowCallback'
,
'onProvideKeyboardShortcuts'
,
data
,
menu
)
callback
(
'onProvideKeyboardShortcuts'
)
}
override
onPreWindowAttributesChanged
(
params
:
UniActivityParams
,
attrs
:
WindowManager
.
LayoutParams
)
{
console
.
log
(
'UTSActivityWindowCallback'
,
'onPreWindowAttributesChanged'
,
attrs
)
callback
(
'onPreWindowAttributesChanged'
)
}
override
onPrePanelClosed
(
params
:
UniActivityParams
,
featureId
:
Int
,
menu
:
Menu
)
{
console
.
log
(
'UTSActivityWindowCallback'
,
'onPrePanelClosed'
,
featureId
,
menu
)
callback
(
'onPrePanelClosed'
)
}
}
export
class
UTSActivityCallback
extends
UniActivityCallback
{
constructor
()
{
super
()
}
override
onBackPressed
(
params
:
UniActivityParams
)
{
console
.
log
(
'UTSActivityCallback'
,
'onBackPressed'
,
params
)
callback
(
'onBackPressed'
)
}
override
onPreBackPressed
(
params
:
UniActivityParams
)
{
console
.
log
(
'UTSActivityCallback'
,
'onPreBackPressed'
,
params
)
callback
(
'onPreBackPressed'
)
}
override
onRequestPermissionsResult
(
params
:
UniActivityParams
,
requestCode
:
Int
,
permissions
:
MutableList
<
String
>
,
grantResults
:
IntArray
)
{
console
.
log
(
'UTSActivityCallback'
,
'onRequestPermissionsResult'
,
params
)
callback
(
'onRequestPermissionsResult'
)
}
}
export
class
UTSActivityComponentCallback
extends
UniActivityComponentCallback
{
constructor
()
{
super
()
}
override
onConfigurationChanged
(
params
:
UniActivityParams
,
newConfig
:
Configuration
)
{
console
.
log
(
'UTSActivityComponentCallback'
,
'onConfigurationChanged'
,
params
,
''
+
newConfig
)
callback
(
'onConfigurationChanged'
)
}
override
onPreConfigurationChanged
(
params
:
UniActivityParams
,
newConfig
:
Configuration
)
{
console
.
log
(
'UTSActivityComponentCallback'
,
'onPreConfigurationChanged'
,
params
,
''
+
newConfig
)
callback
(
'onPreConfigurationChanged'
)
}
}
// #endif
// #endif
\ No newline at end of file
uni_modules/uts-tests/utssdk/Date.uts
浏览文件 @
0877c9e2
...
...
@@ -63,6 +63,19 @@ export function testDate() : Result {
expect(event2.toDateString()).toEqual("Thu Jan 09 2014");
// #endif
})
test('newDateTest', () => {
// #ifdef APP-ANDROID
expect(new Date("2024/5/1").toString()).toEqual("Wed May 01 2024 00:00:00 GMT+0800");
expect(new Date("2024/5/1 10:00:00").toString()).toEqual("Wed May 01 2024 10:00:00 GMT+0800");
expect(new Date("2024-05-01 10:00:00").toString()).toEqual("Wed May 01 2024 10:00:00 GMT+0800");
expect(new Date("2024-05-01 11:00").toString()).toEqual("Wed May 01 2024 11:00:00 GMT+0800");
expect(new Date("2024/05/01 12:00").toString()).toEqual("Wed May 01 2024 12:00:00 GMT+0800");
expect(new Date("2024-5-1 10:00").toString()).toEqual("Wed May 01 2024 10:00:00 GMT+0800");
expect(new Date("2024/5/1 10:00").toString()).toEqual("Wed May 01 2024 10:00:00 GMT+0800");
// #endif
})
test('getDate', () => {
...
...
uni_modules/uts-tests/utssdk/Error.uts
浏览文件 @
0877c9e2
...
...
@@ -9,6 +9,11 @@ export function testError(): Result {
expect((e as Error).message).toEqual("Whoops!");
}
})
test('UniError', () => {
expect(new UniError().message).toEqual('')
expect(new UniError('Whoops!').message).toEqual('Whoops!')
})
// test('name', () => {
// const e = new Error("Malformed input"); // e.name is 'Error'
// e.name = "ParseError";
...
...
uni_modules/uts-tests/utssdk/Global.uts
浏览文件 @
0877c9e2
...
...
@@ -3,6 +3,22 @@ import { describe, test, expect, Result } from './tests.uts'
export function testGlobal(): Result {
return describe("Global", () => {
test('setInterval', () => {
// #ifdef APP-ANDROID
let aCount = 0
let taskId = setInterval(function(){
aCount += 1
},0)
setTimeout(function(){
console.log(aCount)
console.log(taskId)
clearInterval(taskId)
expect(aCount > 10).toEqual(true);
},200)
// #endif
})
test('parseInt', () => {
expect(parseInt("123.456")).toEqual(123);
expect(parseInt("123")).toEqual(123);
...
...
uni_modules/uts-tests/utssdk/JSON.uts
浏览文件 @
0877c9e2
此差异已折叠。
点击以展开。
uni_modules/uts-tests/utssdk/JSON_large.uts
0 → 100644
浏览文件 @
0877c9e2
此差异已折叠。
点击以展开。
uni_modules/uts-tests/utssdk/Math.uts
浏览文件 @
0877c9e2
...
...
@@ -109,6 +109,8 @@ export function testMath(): Result {
expect(Math.ceil(4)).toEqual(4);
expect(Math.ceil(7.004)).toEqual(8);
expect(Math.ceil(-7.004)).toEqual(-7);
expect(Math.ceil(37110233000.223)).toEqual(37110233001);
expect(Math.ceil(-37110233000.223)).toEqual(-37110233000);
})
test('clz32', () => {
expect(Math.clz32(1)).toEqual(31);
...
...
@@ -141,6 +143,8 @@ export function testMath(): Result {
expect(Math.floor(5.05)).toEqual(5);
expect(Math.floor(5)).toEqual(5);
expect(Math.floor(-5.05)).toEqual(-6);
expect(Math.floor(37110233000.223)).toEqual(37110233000);
expect(Math.floor(-37110233000.223)).toEqual(-37110233001);
})
test('fround', () => {
expect(Math.fround(1.5)).toEqual(1.5);
...
...
@@ -236,10 +240,12 @@ export function testMath(): Result {
expect(Math.trunc(42.84)).toEqual(42);
expect(Math.trunc(0.123)).toEqual(0);
})
test('round', () => {
expect(Math.round(0.9)).toEqual(1);
expect(Math.round(5.95)).toEqual(6);
expect(Math.round(-5.05)).toEqual(-5);
})
test('round', () => {
expect(Math.round(0.9)).toEqual(1);
expect(Math.round(5.95)).toEqual(6);
expect(Math.round(-5.05)).toEqual(-5);
expect(Math.round(37110233000.223)).toEqual(37110233000);
expect(Math.round(-37110233000.223)).toEqual(-37110233000);
})
})
}
uni_modules/uts-tests/utssdk/UTSJSONObject.uts
0 → 100644
浏览文件 @
0877c9e2
import { describe, test, expect, expectNumber, Result } from './tests.uts'
export function testUTSJSONObject() : Result {
return describe("utsjsonobject", () => {
test('keys', () => {
// #ifdef APP-ANDROID
let obj = {
name:"zhangsan",
age:11
}
expect(UTSJSONObject.keys(obj).size).toEqual(2);
console.log(UTSJSONObject.keys(obj))
// #endif
})
test('assign-notype', () => {
// #ifdef APP-ANDROID
const target = { a: 1, b: 2 };
const source = { b: 4, c: 5 };
const returnedTarget = UTSJSONObject.assign(target, source);
expect(returnedTarget!.toMap().size).toEqual(3);
console.log(returnedTarget)
// #endif
})
test('assign-withtype', () => {
// #ifdef APP-ANDROID
type User = {
a:number
b:number
}
const target = { a: 1, b: 2 };
const source = { b: 4, c: 5 };
const returnedTarget = UTSJSONObject.assign<User>(target, source);
expect(returnedTarget!.a).toEqual(1);
console.log(returnedTarget)
// #endif
})
})
}
\ No newline at end of file
uni_modules/uts-tests/utssdk/console.uts
0 → 100644
浏览文件 @
0877c9e2
import { describe, test, expect, expectNumber, Result } from './tests.uts'
function obtainInnerObject(obj:Any | null):UTSJSONObject{
let jsonStr = console.getLogV2(obj).slice(19,-17)
let a = JSON.parseArray(jsonStr)![0]
return a as UTSJSONObject
}
export function testConsole() : Result {
return describe("log", () => {
test('log-native-obj', () => {
// #ifdef APP-ANDROID
expect(obtainInnerObject(0.9).get("type")).toEqual("Double");
expect(obtainInnerObject(0.9).get("subType")).toEqual("number");
expect(obtainInnerObject(0.9).get("value")).toEqual("0.9");
// #endif
}
)
})
}
\ No newline at end of file
uni_modules/uts-tests/utssdk/index.uts
浏览文件 @
0877c9e2
...
...
@@ -3,7 +3,10 @@ import { testDate } from './Date.uts'
import { testString } from './String.uts'
import { testError } from './Error.uts'
import { testKeyWord } from './KeyWord.uts'
import { testJSON } from './JSON.uts'
import { testJSON } from './JSON.uts'
import { testJSONLarge } from './JSON_large.uts'
import { testUTSJSONObject } from './UTSJSONObject.uts'
import { testConsole } from './console.uts'
import { testNumber } from './Number.uts'
import { testMap } from './Map.uts'
import { testSet } from './Set.uts'
...
...
@@ -31,14 +34,17 @@ export function runTests() : UTSJSONObject {
const KeyWordRes = testKeyWord();
const ForLoopRes = testForLoop();
const GlobalRes = testGlobal();
const TypeRes = testType();
const TypeRes = testType();
const JSONLargeRes = testJSONLarge();
const consoleRes = testConsole();
const UTSJSONObjectRes = testUTSJSONObject();
return {
Array: ArrayRes,
Date: DateRes,
String: StringRes,
Error: ErrorRes,
Json: JsonRes,
Json: JsonRes,
JSONLarge:JSONLargeRes,
Number: NumberRes,
Map: MapRes,
Set: SetRes,
...
...
@@ -48,6 +54,8 @@ export function runTests() : UTSJSONObject {
KeyWord: KeyWordRes,
ForLoop: ForLoopRes,
Global: GlobalRes,
Type: TypeRes
Type: TypeRes,
console:consoleRes,
UTSJSONObject:UTSJSONObjectRes
}
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录