 kubeconfig = await testClient.getKubeconfig({ namespace, name })
      expect(getSecretStub).to.be.calledOnceWith(namespace, name)
      expect(kubeconfig).to.equal('foo')
    })

    it('should not find a kubeconfig in the secret', async function () {
      getSecretStub.returns({
        data: {}
      })
      try {
        await testClient.getKubeconfig({ namespace, name })
        expect.fail('expected "getKubeconfig" to throw not found')
      } catch (err) {
        expect(err).to.be.instanceof(HTTPError)
        expect(err.response.statusCode).to.equal(404)
      }
    })
  })
})


//
//  RandomForest.h
//  myopencv
//
//  Created by lequan on 1/24/15.
//  Copyright (c) 2015 lequan. All rights reserved.
//

#ifndef __myopencv__RandomForest__
#define __myopencv__RandomForest__

#include "Tree.h"

class RandomForest{
public:
    std::vector<std::vector<Tree> > rfs_;
    int max_numtrees_;
    int num_landmark_;
    int max_depth_;
    int stages_;
    double overlap_ratio_;
    
    
    RandomForest(){
        max_numtrees_ = global_params.max_numtrees;
        num_landmark_ = global_params.landmark_num;
        max_depth_    = global_params.max_depth;
        overlap_ratio_ = global_params.bagging_overlap;
        
        // resize the trees
        rfs_.resize(num_landmark_);
        for (int i=0;i<num_landmark_;i++){
            rfs_[i].resize(max_numtrees_);
        }
    }
    void Train(const std::vector<cv::Mat_<uchar> >& images,
               const std::vector<cv::Mat_<double> >& ground_truth_shapes,
               const std::vector<cv::Mat_<double> >& current_shapes,
               const std::vector<BoundingBox> & bounding_boxs,
               const cv::Mat_<double>& mean_shape,
               const std::vector<cv::Mat_<double> >& shapes_residual,
               int stages
               );
    void Read(std::ifstream& fin);
    void Write(std::ofstream& fout);
};



#endif /* defined(__myopencv__RandomForest__) */


/*
 * Copyright 2018 Google
 *
 * Licensed under the Apache License, Version 2