public void TestIntervalAggregation() { var aggregator = new OracleValueAggregator(); var oneYear = new OracleIntervalYearToMonth(new OracleIntervalYM(1, 0)); aggregator.AddValue(oneYear); aggregator.AddValue(oneYear); var twoYear = new OracleIntervalYearToMonth(new OracleIntervalYM(2, 0)); aggregator.AddValue(twoYear); aggregator.AddValue(twoYear); aggregator.AggregatedValuesAvailable.ShouldBeTrue(); aggregator.LimitValuesAvailable.ShouldBeTrue(); aggregator.Average.ShouldBe(new OracleIntervalYearToMonth(new OracleIntervalYM(1, 6))); aggregator.Sum.ShouldBe(new OracleIntervalYearToMonth(new OracleIntervalYM(6, 0))); aggregator.Minimum.ShouldBe(oneYear); aggregator.Maximum.ShouldBe(twoYear); aggregator.Mode.Value.ShouldBeNull(); aggregator.Mode.Count.ShouldBeNull(); aggregator.Median.ShouldBe(new OracleIntervalYearToMonth(new OracleIntervalYM(1, 6))); aggregator.Count.ShouldBe(4); aggregator.DistinctCount.ShouldBe(2); }
protected bool Equals(OracleIntervalYearToMonth other) { return(_value.Equals(other._value)); }
protected bool Equals(OracleIntervalYearToMonth other) => _value.Equals(other._value);
private static object[] BuildValueArray(OracleDataReader reader, IList<string> fieldTypes, bool prefetch) { var columnData = new object[fieldTypes.Count]; for (var i = 0; i < fieldTypes.Count; i++) { var fieldType = fieldTypes[i]; object value; switch (fieldType) { case "BFile": value = new OracleExternalBinaryFile(reader.GetOracleBFile(i)); break; case "Blob": value = new OracleBlobValue(reader.GetOracleBlob(i)); break; case "Clob": case "NClob": value = new OracleClobValue(fieldType.ToUpperInvariant(), reader.GetOracleClob(i)); break; case "Long": var oracleString = reader.GetOracleString(i); var stringValue = oracleString.IsNull ? (object)DBNull.Value : $"{oracleString.Value}{(oracleString.Value.Length == OracleDatabaseModel.InitialLongFetchSize ? CellValueConverter.Ellipsis : null)}"; value = new OracleSimpleValue(stringValue); break; case "Raw": value = new OracleRawValue(reader.GetOracleBinary(i)); break; case "LongRaw": value = new OracleLongRawValue(reader.GetOracleBinary(i)); break; case "TimeStamp": value = new OracleTimestamp(reader.GetOracleTimeStamp(i)); break; case "TimeStampTZ": value = new OracleTimestampWithTimeZone(reader.GetOracleTimeStampTZ(i)); break; case "TimeStampLTZ": value = new OracleTimestampWithLocalTimeZone(reader.GetOracleTimeStampLTZ(i)); break; case "Decimal": value = new OracleNumber(reader.GetOracleDecimal(i)); break; #if !ORACLE_MANAGED_DATA_ACCESS_CLIENT case "XmlType": value = new OracleXmlValue(reader.GetOracleXmlType(i)); break; #endif case "Object": case "Array": value = reader.GetOracleValue(i); break; case "Date": var oracleDate = reader.GetOracleDate(i); value = oracleDate.IsNull ? new OracleDateTime() : new OracleDateTime(oracleDate); break; case "IntervalDS": value = new OracleIntervalDayToSecond(reader.GetOracleIntervalDS(i)); break; case "IntervalYM": value = new OracleIntervalYearToMonth(reader.GetOracleIntervalYM(i)); break; case "Char": case "NChar": case "Varchar": case "Varchar2": case "NVarchar": case "NVarchar2": value = new OracleSimpleValue(reader.GetValue(i)); break; case OracleRowId.TypeName: value = new OracleRowId(reader.GetOracleString(i)); break; default: value = reader.GetValue(i); break; } if (prefetch) { var largeValue = value as ILargeValue; largeValue?.Prefetch(); } columnData[i] = value; } return columnData; }