feat: 后端全量更新 - 含所有本次需求

- Contract.php: 返回合约账户余额(balance_contract)
- My.php: 地址管理增加BTC/ETH
- AppContract.php: 一键平仓(closeall)
- AppProxy.php: 代理专属注册链接 + 分级权限(L1/L2)
- site.php: 手续费减半(0.018→0.009)
- agent_permission_setup.sql: 代理权限SQL
- crypto_news_crawler.py: 新闻自动采集脚本
This commit is contained in:
li
2026-03-30 20:16:32 +08:00
commit 1b24994e74
6721 changed files with 1308571 additions and 0 deletions
@@ -0,0 +1,69 @@
<?php
namespace Stichoza\GoogleTranslate\Tests;
use ReflectionClass;
use PHPUnit\Framework\TestCase;
use Stichoza\GoogleTranslate\GoogleTranslate;
class UtilityTest extends TestCase
{
public $tr;
public $method;
public function setUp()
{
$this->tr = new GoogleTranslate();
$reflection = new ReflectionClass(get_class($this->tr));
$this->method = $reflection->getMethod('isValidLocale');
$this->method->setAccessible(true);
}
public function testIsValidLocale()
{
$m = $this->method;
$t = $this->tr;
$booleanAssertions = [
'ab' => true,
'ab-CD' => true,
'ab-CDE' => false,
'abc-DE' => false,
'abc-DEF' => false,
'abc' => false,
'ab-' => false,
'a' => false,
];
foreach ($booleanAssertions as $key => $value) {
$this->assertEquals($m->invokeArgs($t, [$key]), $value);
}
}
public function testSetOptions()
{
$res = fopen('php://memory', 'r+');
$this->tr->setOptions([
'debug' => $res,
'headers' => [
'User-Agent' => 'Foo',
],
])->translate('hello');
rewind($res);
$output = str_replace("\r", '', stream_get_contents($res));
$this->assertContains('User-Agent: Foo', $output);
GoogleTranslate::trans('world', 'en', null, [
'debug' => $res,
'headers' => [
'User-Agent' => 'Bar',
],
]);
rewind($res);
$output = str_replace("\r", '', stream_get_contents($res));
$this->assertContains('User-Agent: Bar', $output);
fclose($res);
}
}