1() = evalfile ("inc.sl");
2
3testing_feature ("argv processing");
4
5define play_games_width_argv ()
6{
7   try
8     {
9	eval ("__argc = 1;");
10	failed ("__argc read-only test");
11     }
12   catch ReadOnlyError;
13
14   try
15     {
16	eval ("__argv = [\"a\", \"b\"];");
17	failed ("__argv = ... test");
18     }
19   catch ForbiddenError;
20
21   try
22     {
23	if (length (__argv))
24	  eval ("__argv[0] = \"a\";");
25     }
26   catch ReadOnlyError: failed ("__argv[0] is read-only");
27
28   loop (20)
29     {
30	variable x = __argv;
31     }
32}
33play_games_width_argv ();
34
35define test_argv (argv)
36{
37   __set_argc_argv (argv);
38   variable argc = length (argv);
39   if (__argc != argc)
40     failed ("Expected __argc to be %d, found %d", argc, __argc);
41   if (length (argv) != __argc)
42     failed ("__argv does not have the expected length, found %d", length(__argv));
43   if (not _eqs (__argv, argv))
44     failed ("__argv did not have the expected value");
45
46   play_games_width_argv ();
47}
48test_argv (String_Type[0]);
49test_argv (["a0"]);
50test_argv (["a0", "b0"]);
51test_argv (["a0", "b0", "c0"]);
52
53print ("Ok\n");
54
55exit (0);
56
57