Files
ortools-clone/ortools/util
Corentin Le Molgat 582805f12b .Net: fix leak in vector.i wrapping
Test.cs:
using System;
using Xunit;
using Google.OrTools.ConstraintSolver;
using static Google.OrTools.ConstraintSolver.operations_research_constraint_solver;

namespace Google.OrTools.Tests {
  public class Tmp {
    [Theory][InlineData(false)][InlineData(true)]
      public void IntVectorToInt64Vector(bool callGC) {
        Console.WriteLine("GC enabled: {0}", callGC);

        Console.WriteLine("initialization...");
        int[] input = new int[100000];
        for(int i=0; i < input.Length; ++i) {
          input[i] = 2*i;
        }
        Console.WriteLine("initialization...DONE");

        for(int i=0; i < 1000000; ++i) {
          long[] output = ToInt64Vector(input);
          Assert.Equal(input.Length, output.Length);
          Assert.Equal(0, output[0]);
          Assert.Equal(2, output[1]);
          Assert.Equal(2*(input.Length-1), output[input.Length-1]);
          if (callGC) {
            GC.Collect();
            GC.WaitForPendingFinalizers();
          }
        }
      }

    [Theory][InlineData(false)][InlineData(true)]
      public void Sequence(bool callGC) {
        Console.WriteLine("GC enabled: {0}", callGC);

        Console.WriteLine("initialization...");
        Solver solver = new Solver("Solver");
        Assignment ass = solver.MakeAssignment();
        IntervalVar[] intervals =
          solver.MakeFixedDurationIntervalVarArray(10, 0, 10, 5, false, "task");
        DisjunctiveConstraint disjunctive = intervals.Disjunctive("Sequence");
        SequenceVar var = disjunctive.SequenceVar();
        ass.Add(var);
        Console.WriteLine("initialization...DONE");

        for(int i=0; i < 1000000; ++i) {
          ass.SetForwardSequence(var, new int[] { 1, 3, 5 });
          int[] seq = ass.ForwardSequence(var);
          Assert.Equal(3, seq.Length);
          Assert.Equal(1, seq[0]);
          Assert.Equal(3, seq[1]);
          Assert.Equal(5, seq[2]);
          if (callGC) {
            GC.Collect();
            GC.WaitForPendingFinalizers();
          }
        }
        GC.KeepAlive(solver);
      }

  }
}  // namespace Google.OrTools.Tests

then
```
make run_test SOURCE=tmp.cs &
htop
```
2019-03-08 14:42:39 +01:00
..
2019-03-06 11:01:22 +01:00
2019-02-18 15:44:06 +01:00
2018-11-10 18:00:53 +01:00
2018-11-10 18:00:53 +01:00
2018-11-10 18:00:53 +01:00
2019-02-10 18:51:36 +01:00
2018-11-10 18:00:53 +01:00
2018-11-10 18:00:53 +01:00
2018-11-10 18:00:53 +01:00
2018-11-10 18:00:53 +01:00
2018-11-10 18:00:53 +01:00
2018-11-10 18:00:53 +01:00
2018-11-10 18:00:53 +01:00
2018-11-10 18:00:53 +01:00
2018-11-10 18:00:53 +01:00
2018-11-10 18:00:53 +01:00
2018-11-10 18:00:53 +01:00
2018-11-10 18:00:53 +01:00
2018-11-10 18:00:53 +01:00
2018-11-10 18:00:53 +01:00
2018-11-10 18:00:53 +01:00
2018-11-10 18:00:53 +01:00
2018-11-10 18:00:53 +01:00
2018-11-10 18:00:53 +01:00

<summary> Various utilities to be used by libraries </summary>

This directory contains various utilities needed by the operations
research libraries.

  - const_int_array.h : A read-only container of integer values.
  - const_ptr_array.h : A read-only container of pointers.