lobe-chat

Форк
0
/
plugin.test.ts 
80 строк · 4.6 Кб
1
import { describe, expect, it } from 'vitest';
2

3
import { ARTIFACT_TAG_REGEX } from './plugin';
4

5
describe('ARTIFACT_TAG_REGEX', () => {
6
  it('should match a simple lobeArtifact tag', () => {
7
    const input = '<lobeArtifact>Simple content</lobeArtifact>';
8
    const matches = input.match(ARTIFACT_TAG_REGEX);
9
    expect(matches).toHaveLength(2);
10
    expect(matches?.[1]).toBe('Simple content');
11
  });
12

13
  it('should match a lobeArtifact tag with attributes', () => {
14
    const input = '<lobeArtifact type="image">Content with attributes</lobeArtifact>';
15
    const matches = input.match(ARTIFACT_TAG_REGEX);
16
    expect(matches).toHaveLength(2);
17
    expect(matches?.[1]).toBe('Content with attributes');
18
  });
19

20
  it('should match lobeArtifact tag with multiline content', () => {
21
    const input = '<lobeArtifact>\nMultiline\ncontent\n</lobeArtifact>';
22
    const matches = input.match(ARTIFACT_TAG_REGEX);
23
    expect(matches).toHaveLength(2);
24
    expect(matches?.[1]).toBe('\nMultiline\ncontent\n');
25
  });
26

27
  it('should match an unclosed lobeArtifact tag', () => {
28
    const input = '<lobeArtifact>Unclosed tag';
29
    const matches = input.match(ARTIFACT_TAG_REGEX);
30
    expect(matches).toHaveLength(2);
31
    expect(matches?.[1]).toBe('Unclosed tag');
32
  });
33

34
  it('should not match when there is no lobeArtifact tag', () => {
35
    const input = 'This is a text without any lobeArtifact tag';
36
    const matches = input.match(ARTIFACT_TAG_REGEX);
37
    expect(matches).toBeNull();
38
  });
39

40
  it('should match', () => {
41
    const input = `好的,让我来为您解释"OpenAI"这个词。
42

43
<lobeThinking>这个词涉及人工智能领域的一家知名公司,我需要用批判性和幽默的视角来解读它的本质。我会结合当前AI发展的现状,用隐喻的方式来表达。</lobeThinking>
44

45
<lobeArtifact identifier="openai-new-interpretation" type="image/svg+xml" title="OpenAI 汉语新解">
46
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 600">
47
  <rect width="400" height="600" fill="#f0f0f0"/>
48
  <g font-family="Arial, sans-serif">
49
    <text x="200" y="50" font-size="24" font-weight="bold" text-anchor="middle" fill="#333">汉语新解</text>
50
    <line x1="50" y1="70" x2="350" y2="70" stroke="#333" stroke-width="2"/>
51
    <text x="50" y="100" font-size="18" fill="#555">OpenAI</text>
52
    <text x="50" y="130" font-size="14" fill="#777">オープンAI / Open AI</text>
53
    <text x="50" y="180" font-size="16" fill="#444" width="300">
54
      <tspan x="50" dy="0">一家打着"开放"旗号的AI公司,</tspan>
55
      <tspan x="50" dy="25">实则是科技世界的现代炼金术士。</tspan>
56
      <tspan x="50" dy="25">他们在神秘实验室里炼制数字魔药,</tspan>
57
      <tspan x="50" dy="25">声称要拯救世界,却把钥匙藏在高塔顶端。</tspan>
58
      <tspan x="50" dy="25">这是一场华丽的默剧,观众屏息以待,</tspan>
59
      <tspan x="50" dy="25">而台上的演员正在即兴创作剧本。</tspan>
60
    </text>
61
    <path d="M50 400 Q200 300 350 400" fill="none" stroke="#666" stroke-width="2"/>
62
    <text x="200" y="450" font-size="14" text-anchor="middle" fill="#555">开放的盒子里装着封闭的秘密</text>
63
  </g>
64
</svg>
65
</lobeArtifact>
66

67
OpenAI,这个名字听起来多么崇高啊!就像是一位身披白袍、头戴光环的科技天使,降临凡间来拯救我们这些被信息海洋淹没的可怜虫。
68

69
但是,亲爱的朋友,让我们摘下那副玫瑰色的眼镜,仔细看看这位"救世主"的真面目。OpenAI,多么讽刺的名字啊!它就像是一个贴着"免费午餐"标签的高级餐厅,当你兴冲冲地推门而入时,才发现菜单上的价格足以让你的钱包瞬间减肥。
70

71
这家公司就像是科技世界的现代炼金术士。他们在神秘的实验室里日夜不停地炼制数字魔药,声称要创造出能解决人类所有问题的"哲学家之石"。可惜啊,这些魔法配方都被锁在了高塔顶端,只有少数"有缘人"才能一睹真容。
72

73
OpenAI的存在,就像是一场精心编排的默剧。台上的演员们摆出各种夸张的姿势,声称自己正在为人类的未来奋斗;台下的观众们屏息凝神,既期待着奇迹的出现,又担心着潘多拉魔盒被轻易打开。而最讽刺的是,这场戏的剧本还在即兴创作中,连导演自己都不知道下一幕会发生什么。
74

75
所以,我亲爱的朋友,下次当你听到"OpenAI"这个词时,请记住:在这个看似开放的盒子里,装着的可能是一堆封闭的秘密。毕竟,在这个光鲜亮丽的科技舞台上,最稀缺的从来就不是智能,而是真正的开放与透明。`;
76

77
    const matches = ARTIFACT_TAG_REGEX.exec(input);
78
    expect(matches).toHaveLength(2);
79
  });
80
});
81

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.