[
  {
    "name": "nonsmooth zero exposure certificate",
    "function": "robust_mean_variance",
    "args": [
      [
        0.09,
        0.05
      ],
      [
        [
          0.04,
          0
        ],
        [
          0,
          0.01
        ]
      ],
      [
        [
          0.02
        ],
        [
          -0.02
        ]
      ],
      1
    ],
    "expected": {
      "weights": [
        0.5,
        0.5
      ],
      "objective": 0.0575,
      "status": "optimal"
    },
    "error": false
  },
  {
    "name": "zero uncertainty is mean variance",
    "function": "robust_mean_variance",
    "args": [
      [
        0.08,
        0.05
      ],
      [
        [
          0.04,
          0
        ],
        [
          0,
          0.01
        ]
      ],
      [
        [
          0.02,
          0
        ],
        [
          0,
          0.01
        ]
      ],
      0
    ],
    "expected": {
      "weights": [
        0.5,
        0.5
      ],
      "objective": 0.0525
    },
    "error": false
  },
  {
    "name": "empty factor rejected",
    "function": "robust_mean_variance",
    "args": [
      [
        0.08,
        0.05
      ],
      [
        [
          0.04,
          0
        ],
        [
          0,
          0.01
        ]
      ],
      [
        [],
        []
      ],
      0.5
    ],
    "expected": null,
    "error": true
  },
  {
    "name": "infinite tolerance rejected",
    "function": "robust_mean_variance",
    "args": [
      [
        0.08,
        0.05
      ],
      [
        [
          0.04,
          0
        ],
        [
          0,
          0.01
        ]
      ],
      [
        [
          0.02,
          0
        ],
        [
          0,
          0.01
        ]
      ],
      0.5,
      1,
      20000,
      "Infinity"
    ],
    "expected": null,
    "error": true
  },
  {
    "name": "exhaustion is visible",
    "function": "robust_mean_variance",
    "args": [
      [
        0.08,
        0.05
      ],
      [
        [
          0.04,
          0
        ],
        [
          0,
          0.01
        ]
      ],
      [
        [
          0.02,
          0
        ],
        [
          0,
          0.01
        ]
      ],
      0.5,
      1,
      1
    ],
    "expected": {
      "status": "nonconverged"
    },
    "error": false
  },
  {
    "error": false,
    "name": "factor rotation preserves uncertainty set",
    "function": "robust_mean_variance",
    "args": [
      [
        0.08,
        0.05
      ],
      [
        [
          0.04,
          0
        ],
        [
          0,
          0.01
        ]
      ],
      [
        [
          0,
          0.02
        ],
        [
          -0.01,
          0
        ]
      ],
      0.5
    ],
    "expected": {
      "weights": [
        0.4421075077,
        0.5578924923
      ],
      "objective": 0.0471048991
    }
  }
]
