SeasonalTrendLoess { @Override public String toString() { return String.format( "SeasonalTrendLoess: [\n" + "inner iterations = %d\n" + "outer iterations = %d\n" + "periodicity = %d\n" + "seasonality settings = %s\n" + "trend settings = %s\n" + "lowpass settings = %s\n]", this.fInnerIterations, this.fRobustIterations, this.fPeriodLength, this.fSeasonalSettings, this.fTrendSettings, this.fLowpassSettings); } @SuppressWarnings("WeakerAccess")  SeasonalTrendLoess(double[] data, int periodicity, int ni, int no, LoessSettings seasonalSettings,
	                   LoessSettings trendSettings, LoessSettings lowpassSettings); static Decomposition performPeriodicDecomposition(
			double[] data,
			int periodicity
	); static Decomposition performRobustPeriodicDecomposition(
			double[] data,
			int periodicity
	); Decomposition decompose(); @Override String toString();  }
@Test public void toStringTest() { double[] data = testDataGenerator.createNoisySeasonalDataWithTimeSeed(144, 12, 10.0, 1.0, 2.0); SeasonalTrendLoess.Builder builder = new SeasonalTrendLoess.Builder().setPeriodLength(12).setSeasonalWidth(7).setNonRobust(); SeasonalTrendLoess stl = builder.buildSmoother(data); assertEquals( "SeasonalTrendLoess: [\n" + "inner iterations = 2\n" + "outer iterations = 0\n" + "periodicity = 12\n" + "seasonality settings = [width = 7, degree = 1, jump = 1]\n" + "trend settings = [width = 23, degree = 1, jump = 3]\n" + "lowpass settings = [width = 13, degree = 1, jump = 2]\n]", stl.toString()); }