#test-cases #language #generator #programming-language #automata #testing-tools

bin+lib cpast

使用强大的 clex 语言生成工具运行自定义测试用例。非常适合竞技程序员。可以测试两个文件,并匹配随机生成的输出

12 个版本

0.4.1 2024 年 8 月 7 日
0.4.0 2024 年 1 月 30 日
0.3.4 2024 年 1 月 24 日
0.2.9 2023 年 11 月 11 日

#109 in 测试

Download history 11/week @ 2024-07-01 4/week @ 2024-07-22 120/week @ 2024-08-05

124 每月下载量

GPL-3.0-or-later

90KB
1.5K SLoC

cpast - 代码测试和分析工具

Crates.io Crates.io GitHub repo size Crates.io docs.rs GitHub Workflow Status (with event)

我们正在努力使 cpast 对所有人更加易于使用和简单。如果你有 Python 经验和/或编写提示的经验,请考虑为 cpast_llm 仓库做出贡献。

cpast 是一个通用的代码测试和分析工具,它允许你使用名为 clex 的自定义语言生成器测试正确和错误的代码文件。它支持多种编程语言,包括 Python、C++、C、Rust、Ruby、JavaScript 和 Java。你可以指定迭代次数,并使用随机输入值测试你的代码,将输出与预期结果进行比较。

介绍

cpast - 代码测试和分析工具是解决竞技程序员(CP)和编码爱好者面临的关键问题的解决方案。它使你的编码之旅更加顺畅,并克服竞技编程和编码实践中的常见挑战。查看博客文章 此处

解决竞技编程(C.P.)中的关键问题

竞技编程,通常称为 C.P.,涉及在严格的时间限制内解决算法和编码挑战。编码竞赛的参与者,如 ACM ICPC、Codeforces 和 LeetCode,通常面临以下挑战

  • 验证代码正确性以针对各种测试用例。
  • 在时间限制下有效地测试代码。
  • 快速调试错误以改进代码性能。

cpast 已被设计来直接应对这些挑战,使竞技编程体验更加高效和愉快。

cpast 如何解决问题

1. 测试正确性

cpast 允许您使用正确和错误的代码文件进行测试,确保您的解决方案按预期工作,同时帮助您识别和修复代码中的问题。

2. 快速测试

在竞技编程中,时间至关重要。 cpast 允许您定义自定义测试用例并自动化测试,节省宝贵的时间,这些时间本可以用来手动验证代码的正确性。

3. 调试支持

使用 cpast,您可以通过比较实际输出与预期结果来快速识别和调试代码中的问题。这有助于您优化代码性能。

通过解决这些关键问题,cpast 提升了您的竞技编程体验,使其更高效、更有效,最终提高您的编程技能和比赛表现。告别手动测试和调试,让 cpast 为您承担重任。

目录

用例

  1. 调试您的CP/DSA问题。
  2. 在/赛后 Codeforces 竞赛中进行实时黑客攻击。
  3. 为您的出题者生成测试用例。

特性

  • 测试正确和错误的代码文件。
  • 设置运行测试的迭代次数。
  • 支持多种编程语言。
  • 有什么新功能?

入门指南

https://github.com/rootCircle/cpast/assets/35325046/1229ce29-f142-4e7a-9008-10b280fb57b6

安装

要开始使用 cpast,您需要安装它。您可以通过运行以下命令来完成此操作

cargo install cpast
针对 Windows 用户的通知
在 Windows 上,要安装 cargo,请在终端中运行以下命令(用于更快、更轻的设置)
winget install rustup
rustup toolchain install stable-x86_64-pc-windows-gnu
rustup default stable-x86_64-pc-windows-gnu
针对 Linux 用户的通知
在 Linux 上,您需要安装 xorg-dev 和 libxcb-composite0-dev 以进行编译。在 Debian 和 Ubuntu 上,您可以使用以下命令安装它们
sudo apt install xorg-dev libxcb-composite0-dev

剪贴板支持需要

很可能会发现某些 WMs(如 bspwm)的剪贴板支持可能已损坏,但其他功能将正常工作!

针对不在 Windows、Linux 或 macOS 上运行的用户的通知;基本上是安卓用户等

默认编译将不支持,因为这些系统缺少剪贴板 API 支持,因此您需要使用 --no-default-features 功能进行编译

cargo install cpast --no-default-features

用法

以下是一个简单的 cpast 使用示例

测试

cpast test -c correct.cpp -t incorrect.cpp -g "(N) (?:N){\1}" --iterations 100
  • correct.cpp 应包含正确的代码。
  • incorrect.cpp 应包含错误的代码。
  • (N) (?:N){\1} 是语言生成器。
  • 100 是测试迭代次数。

生成

cpast generate "S[10,'U']"
  • 生成长度为 10 的仅大写字母的字符串

语言规范

clex 语言生成器基于自定义语法规范。它允许您定义测试的输入模式。有关 clex 语言及其用法的更多信息,请参阅 Clex 生成器的语法规则

路线图

  • 支持对组值的延迟评估。
  • 添加有关 clex 用法的文档。目前,请尝试从 CLEX_LANGUAGE.md 文件中推断。
  • 在浮点数的范围界限中支持浮点限制。
  • 在非捕获组内部支持捕获组。
  • 支持强字符串检查,如全部小写、全部大写、字母、数字、字母数字。
  • 将来只允许一次编译。
  • 在范围界限中也支持后向引用。

现在您可以使用 cpast 对您的代码进行测试,以检验其对由 clex 语言定义的各种编程语言和输入模式的适应性。祝您测试愉快!

备选方案

依赖项

~7–20MB
~275K SLoC