content: package aima.test.core.unit.probability.bayes.model;
  
  import org.junit.Test;
  
  import aima.core.probability.bayes.BayesInference;
  import aima.core.probability.bayes.exact.EliminationAsk;
  import aima.core.probability.bayes.exact.EnumerationAsk;
  import aima.core.probability.bayes.model.FiniteBayesModel;
  import aima.core.probability.example.BayesNetExampleFactory;
  import aima.test.core.unit.probability.CommonFiniteProbabilityModelTests;
  
  public class FiniteBayesModelTest extends CommonFiniteProbabilityModelTests {
  
  	//
  	// ProbabilityModel Tests
  	@Test
  	public void test_RollingPairFairDiceModel() {
  		for (BayesInference bi : getBayesInferenceImplementations()) {
  			test_RollingPairFairDiceModel(new FiniteBayesModel(
  					BayesNetExampleFactory.construct2FairDiceNetwor(), bi));
  		}
  	}
  
  	@Test
  	public void test_ToothacheCavityCatchModel() {
  		for (BayesInference bi : getBayesInferenceImplementations()) {
  			test_ToothacheCavityCatchModel(new FiniteBayesModel(
  					BayesNetExampleFactory
  							.constructToothacheCavityCatchNetwork(),
  					bi));
  		}
  	}
  
  	@Test
  	public void test_ToothacheCavityCatchWeatherModel() {
  		for (BayesInference bi : getBayesInferenceImplementations()) {
  			test_ToothacheCavityCatchWeatherModel(new FiniteBayesModel(
  					BayesNetExampleFactory
  							.constructToothacheCavityCatchWeatherNetwork(),
  					bi));
  		}
  	}
  
  	@Test
  	public void test_MeningitisStiffNeckModel() {
  		for (BayesInference bi : getBayesInferenceImplementations()) {
  			test_MeningitisStiffNeckModel(new FiniteBayesModel(
  					BayesNetExampleFactory
  							.constructMeningitisStiffNeckNetwork(),
  					bi));
  		}
  	}
  
  	@Test
  	public void test_BurglaryAlarmModel() {
  		for (BayesInference bi : getBayesInferenceImplementations()) {
  			test_BurglaryAlarmModel(new FiniteBayesModel(
  					BayesNetExampleFactory.constructBurglaryAlarmNetwork(), bi));
  		}
  	}
  
  	//
  	// FiniteProbabilityModel Tests
  	@Test
  	public void test_RollingPairFairDiceModel_Distributions() {
  		for (BayesInference bi : getBayesInferenceImplementations()) {
  			test_RollingPairFairDiceModel_Distributions(new FiniteBayesModel(
  					BayesNetExampleFactory.construct2FairDiceNetwor(), bi));
  		}
  	}
  
  	@Test
  	public void test_ToothacheCavityCatchModel_Distributions() {
  		for (BayesInference bi : getBayesInferenceImplementations()) {
  			test_ToothacheCavityCatchModel_Distributions(new FiniteBayesModel(
  					BayesNetExampleFactory
  							.constructToothacheCavityCatchNetwork(),
  					bi));
  		}
  	}
  
  	@Test
  	public void test_ToothacheCavityCatchWeatherModel_Distributions() {
  		for (BayesInference bi : getBayesInferenceImplementations()) {
  			test_ToothacheCavityCatchWeatherModel_Distributions(new FiniteBayesModel(
  					BayesNetExampleFactory
  							.constructToothacheCavityCatchWeatherNetwork(),
  					bi));
  		}
  	}
  
  	@Test
  	public void test_MeningitisStiffNeckModel_Distributions() {
  		for (BayesInference bi : getBayesInferenceImplementations()) {
  			test_MeningitisStiffNeckModel_Distributions(new FiniteBayesModel(
  					BayesNetExampleFactory
  							.constructMeningitisStiffNeckNetwork(),
  					bi));
  		}
  	}
  
  	@Test
  	public void test_BurglaryAlarmModel_Distributions() {
  		for (BayesInference bi : getBayesInferenceImplementations()) {
  			test_BurglaryAlarmModel_Distributions(new FiniteBayesModel(
  					BayesNetExampleFactory.constructBurglaryAlarmNetwork(), bi));
  		}
  	}
  
  	//
  	// PRIVATE METHODS
  	//
  	private BayesInference[] getBayesInferenceImplementations() {
  		return new BayesInference[] { new EnumerationAsk(),
  				new EliminationAsk() };
  	}
  }
  