All Downloads are FREE. Search and download functionalities are using the official Maven repository.

edu.berkeley.cs.jqf.examples.trees.RedBlackBSTNodeGenerator Maven / Gradle / Ivy

Go to download

JQF: Feedback-directed Quickcheck for Java - Sample generators and benchmark tests

There is a newer version: 2.0
Show newest version
package edu.berkeley.cs.jqf.examples.trees;

import java.util.Optional;

import com.pholser.junit.quickcheck.generator.GenerationStatus;
import com.pholser.junit.quickcheck.generator.Generator;
import com.pholser.junit.quickcheck.random.SourceOfRandomness;

/**
 * Created by clemieux on 9/15/17.
 */
public class RedBlackBSTNodeGenerator extends Generator {

    private static final GenerationStatus.Key SUBTREE_SIZE = new GenerationStatus.Key<>("treesize", Integer.class);

    public RedBlackBSTNodeGenerator() {
        super(RedBlackBSTNode.class);
    }

    @Override public RedBlackBSTNode generate(SourceOfRandomness r, GenerationStatus status){
        Optional treesizeOpt = status.valueOf(SUBTREE_SIZE);
        if (!treesizeOpt.isPresent()) return null;
        Integer treesize = treesizeOpt.get();
        if (treesize == 0 ){
            return null;
        }
        treesize = treesize -1;
        int leftSize = r.nextInt(0, treesize);
        int rightSize = treesize - leftSize;
        //System.out.println("leftSize: " + leftSize + ", rightSize: " + rightSize);


        RedBlackBSTNode retNode = new RedBlackBSTNode<>(r.nextInt(), r.nextInt(), r.nextBoolean(), treesize + 1);
     //   System.out.println(retNode.key);
        retNode.left= generate(r, status.setValue(SUBTREE_SIZE, leftSize));
        retNode.right = generate(r, status.setValue(SUBTREE_SIZE, rightSize));
        return retNode;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy