0ba74fbd9a
The header scrcpy.h is intended to be the "public" API. It should not depend on other internal headers. Therefore, declare all required structs in this header and adapt internal code.
131 lines
3.5 KiB
C
131 lines
3.5 KiB
C
#include <assert.h>
|
|
#include <string.h>
|
|
|
|
#include "cli.h"
|
|
#include "common.h"
|
|
|
|
static void test_flag_version(void) {
|
|
struct scrcpy_cli_args args = {
|
|
.opts = SCRCPY_OPTIONS_DEFAULT,
|
|
.help = false,
|
|
.version = false,
|
|
};
|
|
|
|
char *argv[] = {"scrcpy", "-v"};
|
|
|
|
bool ok = scrcpy_parse_args(&args, 2, argv);
|
|
assert(ok);
|
|
assert(!args.help);
|
|
assert(args.version);
|
|
}
|
|
|
|
static void test_flag_help(void) {
|
|
struct scrcpy_cli_args args = {
|
|
.opts = SCRCPY_OPTIONS_DEFAULT,
|
|
.help = false,
|
|
.version = false,
|
|
};
|
|
|
|
char *argv[] = {"scrcpy", "-v"};
|
|
|
|
bool ok = scrcpy_parse_args(&args, 2, argv);
|
|
assert(ok);
|
|
assert(!args.help);
|
|
assert(args.version);
|
|
}
|
|
|
|
static void test_options(void) {
|
|
struct scrcpy_cli_args args = {
|
|
.opts = SCRCPY_OPTIONS_DEFAULT,
|
|
.help = false,
|
|
.version = false,
|
|
};
|
|
|
|
char *argv[] = {
|
|
"scrcpy",
|
|
"--always-on-top",
|
|
"--bit-rate", "5M",
|
|
"--crop", "100:200:300:400",
|
|
"--fullscreen",
|
|
"--max-fps", "30",
|
|
"--max-size", "1024",
|
|
"--lock-video-orientation", "2",
|
|
// "--no-control" is not compatible with "--turn-screen-off"
|
|
// "--no-display" is not compatible with "--fulscreen"
|
|
"--port", "1234:1236",
|
|
"--push-target", "/sdcard/Movies",
|
|
"--record", "file",
|
|
"--record-format", "mkv",
|
|
"--render-expired-frames",
|
|
"--serial", "0123456789abcdef",
|
|
"--show-touches",
|
|
"--turn-screen-off",
|
|
"--prefer-text",
|
|
"--window-title", "my device",
|
|
"--window-x", "100",
|
|
"--window-y", "-1",
|
|
"--window-width", "600",
|
|
"--window-height", "0",
|
|
"--window-borderless",
|
|
};
|
|
|
|
bool ok = scrcpy_parse_args(&args, ARRAY_LEN(argv), argv);
|
|
assert(ok);
|
|
|
|
const struct scrcpy_options *opts = &args.opts;
|
|
assert(opts->always_on_top);
|
|
assert(opts->bit_rate == 5000000);
|
|
assert(!strcmp(opts->crop, "100:200:300:400"));
|
|
assert(opts->fullscreen);
|
|
assert(opts->max_fps == 30);
|
|
assert(opts->max_size == 1024);
|
|
assert(opts->lock_video_orientation == 2);
|
|
assert(opts->port_range.first == 1234);
|
|
assert(opts->port_range.last == 1236);
|
|
assert(!strcmp(opts->push_target, "/sdcard/Movies"));
|
|
assert(!strcmp(opts->record_filename, "file"));
|
|
assert(opts->record_format == SC_RECORD_FORMAT_MKV);
|
|
assert(opts->render_expired_frames);
|
|
assert(!strcmp(opts->serial, "0123456789abcdef"));
|
|
assert(opts->show_touches);
|
|
assert(opts->turn_screen_off);
|
|
assert(opts->prefer_text);
|
|
assert(!strcmp(opts->window_title, "my device"));
|
|
assert(opts->window_x == 100);
|
|
assert(opts->window_y == -1);
|
|
assert(opts->window_width == 600);
|
|
assert(opts->window_height == 0);
|
|
assert(opts->window_borderless);
|
|
}
|
|
|
|
static void test_options2(void) {
|
|
struct scrcpy_cli_args args = {
|
|
.opts = SCRCPY_OPTIONS_DEFAULT,
|
|
.help = false,
|
|
.version = false,
|
|
};
|
|
|
|
char *argv[] = {
|
|
"scrcpy",
|
|
"--no-control",
|
|
"--no-display",
|
|
"--record", "file.mp4", // cannot enable --no-display without recording
|
|
};
|
|
|
|
bool ok = scrcpy_parse_args(&args, ARRAY_LEN(argv), argv);
|
|
assert(ok);
|
|
|
|
const struct scrcpy_options *opts = &args.opts;
|
|
assert(!opts->control);
|
|
assert(!opts->display);
|
|
assert(!strcmp(opts->record_filename, "file.mp4"));
|
|
assert(opts->record_format == SC_RECORD_FORMAT_MP4);
|
|
}
|
|
|
|
int main(void) {
|
|
test_flag_version();
|
|
test_flag_help();
|
|
test_options();
|
|
test_options2();
|
|
return 0;
|
|
};
|