|
| 1 | +import os |
| 2 | +import sys |
| 3 | +import tempfile |
| 4 | + |
| 5 | +sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) |
| 6 | +import concoredocker |
| 7 | + |
| 8 | +def test_safe_literal_eval_dict(): |
| 9 | + f = tempfile.NamedTemporaryFile(mode='w', delete=False) |
| 10 | + f.write("{'a': 1, 'b': 2}") |
| 11 | + f.close() |
| 12 | + result = concoredocker.safe_literal_eval(f.name, {}) |
| 13 | + os.unlink(f.name) |
| 14 | + assert result == {'a': 1, 'b': 2} |
| 15 | + |
| 16 | +def test_safe_literal_eval_list(): |
| 17 | + f = tempfile.NamedTemporaryFile(mode='w', delete=False) |
| 18 | + f.write("[1, 2, 3]") |
| 19 | + f.close() |
| 20 | + result = concoredocker.safe_literal_eval(f.name, []) |
| 21 | + os.unlink(f.name) |
| 22 | + assert result == [1, 2, 3] |
| 23 | + |
| 24 | +def test_safe_literal_eval_missing(): |
| 25 | + result = concoredocker.safe_literal_eval("/nonexistent.txt", {'default': True}) |
| 26 | + assert result == {'default': True} |
| 27 | + |
| 28 | +def test_safe_literal_eval_bad_syntax(): |
| 29 | + f = tempfile.NamedTemporaryFile(mode='w', delete=False) |
| 30 | + f.write("not valid {{{") |
| 31 | + f.close() |
| 32 | + result = concoredocker.safe_literal_eval(f.name, "fallback") |
| 33 | + os.unlink(f.name) |
| 34 | + assert result == "fallback" |
| 35 | + |
| 36 | +def test_initval(): |
| 37 | + concoredocker.simtime = 0 |
| 38 | + result = concoredocker.initval("[5.0, 1.0, 2.0]") |
| 39 | + assert result == [1.0, 2.0] |
| 40 | + assert concoredocker.simtime == 5.0 |
| 41 | + |
| 42 | +def test_initval_single(): |
| 43 | + concoredocker.simtime = 0 |
| 44 | + result = concoredocker.initval("[10.0, 99]") |
| 45 | + assert result == [99] |
| 46 | + assert concoredocker.simtime == 10.0 |
| 47 | + |
| 48 | +def test_unchanged_true(): |
| 49 | + concoredocker.s = "abc" |
| 50 | + concoredocker.olds = "abc" |
| 51 | + assert concoredocker.unchanged() == True |
| 52 | + assert concoredocker.s == '' |
| 53 | + |
| 54 | +def test_unchanged_false(): |
| 55 | + concoredocker.s = "new" |
| 56 | + concoredocker.olds = "old" |
| 57 | + assert concoredocker.unchanged() == False |
| 58 | + assert concoredocker.olds == "new" |
| 59 | + |
| 60 | +def test_write_list(): |
| 61 | + tmpdir = tempfile.mkdtemp() |
| 62 | + outdir = os.path.join(tmpdir, "out1") |
| 63 | + os.makedirs(outdir) |
| 64 | + old_outpath = concoredocker.outpath |
| 65 | + concoredocker.outpath = os.path.join(tmpdir, "out") |
| 66 | + concoredocker.simtime = 5.0 |
| 67 | + |
| 68 | + concoredocker.write(1, "testfile", [1.0, 2.0], delta=0) |
| 69 | + |
| 70 | + with open(os.path.join(outdir, "testfile")) as f: |
| 71 | + content = f.read() |
| 72 | + assert content == "[5.0, 1.0, 2.0]" |
| 73 | + concoredocker.outpath = old_outpath |
| 74 | + |
| 75 | +def test_write_delta(): |
| 76 | + tmpdir = tempfile.mkdtemp() |
| 77 | + outdir = os.path.join(tmpdir, "out1") |
| 78 | + os.makedirs(outdir) |
| 79 | + old_outpath = concoredocker.outpath |
| 80 | + concoredocker.outpath = os.path.join(tmpdir, "out") |
| 81 | + concoredocker.simtime = 10.0 |
| 82 | + |
| 83 | + concoredocker.write(1, "testfile", [3.0], delta=2) |
| 84 | + |
| 85 | + with open(os.path.join(outdir, "testfile")) as f: |
| 86 | + content = f.read() |
| 87 | + assert content == "[12.0, 3.0]" |
| 88 | + assert concoredocker.simtime == 12.0 |
| 89 | + concoredocker.outpath = old_outpath |
| 90 | + |
| 91 | +def test_read_file(): |
| 92 | + tmpdir = tempfile.mkdtemp() |
| 93 | + indir = os.path.join(tmpdir, "in1") |
| 94 | + os.makedirs(indir) |
| 95 | + old_inpath = concoredocker.inpath |
| 96 | + concoredocker.inpath = os.path.join(tmpdir, "in") |
| 97 | + concoredocker.delay = 0.001 |
| 98 | + |
| 99 | + with open(os.path.join(indir, "data"), 'w') as f: |
| 100 | + f.write("[7.0, 100, 200]") |
| 101 | + |
| 102 | + concoredocker.s = '' |
| 103 | + concoredocker.simtime = 0 |
| 104 | + result = concoredocker.read(1, "data", "[0, 0, 0]") |
| 105 | + |
| 106 | + assert result == [100, 200] |
| 107 | + assert concoredocker.simtime == 7.0 |
| 108 | + concoredocker.inpath = old_inpath |
| 109 | + concoredocker.delay = 1 |
| 110 | + |
| 111 | +def test_read_missing(): |
| 112 | + tmpdir = tempfile.mkdtemp() |
| 113 | + indir = os.path.join(tmpdir, "in1") |
| 114 | + os.makedirs(indir) |
| 115 | + old_inpath = concoredocker.inpath |
| 116 | + concoredocker.inpath = os.path.join(tmpdir, "in") |
| 117 | + concoredocker.delay = 0.001 |
| 118 | + |
| 119 | + concoredocker.s = '' |
| 120 | + concoredocker.simtime = 0 |
| 121 | + result = concoredocker.read(1, "nofile", "[0, 5, 5]") |
| 122 | + assert result == [5, 5] |
| 123 | + concoredocker.inpath = old_inpath |
| 124 | + concoredocker.delay = 1 |
0 commit comments