Skip to content

Commit

Permalink
Provide more details to Assert (#180)
Browse files Browse the repository at this point in the history
  • Loading branch information
zihejia authored Sep 25, 2024
1 parent fa38d02 commit c761af5
Showing 1 changed file with 87 additions and 29 deletions.
116 changes: 87 additions & 29 deletions Mixpanel/Value.cs
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,9 @@ public Value this[int index]
get => _array[index];
set
{
Assert.IsTrue(_valueType == ValueTypes.ARRAY || _valueType == ValueTypes.UNDEFINED);
Assert.IsTrue(_valueType == ValueTypes.ARRAY || _valueType == ValueTypes.UNDEFINED,
$"Assertion failed: _valueType is {_valueType}, but expected ValueTypes.ARRAY or ValueTypes.UNDEFINED."
);
_valueType = ValueTypes.ARRAY;
_dataType = DataTypes.CONTAINER;
_array[index] = value;
Expand All @@ -94,7 +96,9 @@ public Value this[string key]
}
set
{
Assert.IsTrue(_valueType == ValueTypes.OBJECT || _valueType == ValueTypes.UNDEFINED);
Assert.IsTrue(_valueType == ValueTypes.OBJECT || _valueType == ValueTypes.UNDEFINED,
$"Assertion failed: _valueType is {_valueType}, but expected ValueTypes.OBJECT or ValueTypes.UNDEFINED."
);
_valueType = ValueTypes.OBJECT;
_dataType = DataTypes.CONTAINER;
_container[key] = value;
Expand Down Expand Up @@ -129,7 +133,9 @@ public override string ToString()

public IEnumerator GetEnumerator()
{
Assert.IsTrue(_valueType == ValueTypes.ARRAY || _valueType == ValueTypes.OBJECT);
Assert.IsTrue(_valueType == ValueTypes.ARRAY || _valueType == ValueTypes.OBJECT,
$"Assertion failed: _valueType is {_valueType}, but expected ValueTypes.ARRAY or ValueTypes.OBJECT."
);
switch (_valueType)
{
case ValueTypes.ARRAY:
Expand All @@ -144,7 +150,9 @@ public int Count
{
get
{
Assert.IsTrue(_valueType == ValueTypes.ARRAY || _valueType == ValueTypes.OBJECT);
Assert.IsTrue(_valueType == ValueTypes.ARRAY || _valueType == ValueTypes.OBJECT,
$"Assertion failed: _valueType is {_valueType}, but expected ValueTypes.ARRAY or ValueTypes.OBJECT."
);
switch (_valueType)
{
case ValueTypes.ARRAY:
Expand All @@ -158,49 +166,63 @@ public int Count

public bool Contains(int index)
{
Assert.IsTrue(_valueType == ValueTypes.ARRAY);
Assert.IsTrue(_valueType == ValueTypes.ARRAY,
$"Assertion failed: _valueType is {_valueType}, but expected ValueTypes.ARRAY."
);
return _array.Contains(index);
}

public bool ContainsKey(string key)
{
Assert.IsTrue(_valueType == ValueTypes.OBJECT);
Assert.IsTrue(_valueType == ValueTypes.OBJECT,
$"Assertion failed: _valueType is {_valueType}, but expected ValueTypes.OBJECT."
);
return _container.ContainsKey(key);
}

public void Add(Value value)
{
Assert.IsTrue(_valueType == ValueTypes.ARRAY || _valueType == ValueTypes.UNDEFINED);
Assert.IsTrue(_valueType == ValueTypes.ARRAY || _valueType == ValueTypes.UNDEFINED,
$"Assertion failed: _valueType is {_valueType}, but expected ValueTypes.ARRAY or ValueTypes.UNDEFINED."
);
_valueType = ValueTypes.ARRAY;
_dataType = DataTypes.CONTAINER;
_array.Add(value);
}

public void Add(string key, Value value)
{
Assert.IsTrue(_valueType == ValueTypes.OBJECT || _valueType == ValueTypes.UNDEFINED);
Assert.IsTrue(_valueType == ValueTypes.OBJECT || _valueType == ValueTypes.UNDEFINED,
$"Assertion failed: _valueType is {_valueType}, but expected ValueTypes.OBJECT or ValueTypes.UNDEFINED."
);
_valueType = ValueTypes.OBJECT;
_dataType = DataTypes.CONTAINER;
_container.Add(key, value);
}

public void Remove(int index)
{
Assert.IsTrue(_valueType == ValueTypes.ARRAY);
Assert.IsTrue(_valueType == ValueTypes.ARRAY,
$"Assertion failed: _valueType is {_valueType}, but expected ValueTypes.ARRAY."
);
_array.Remove(index);
}

public void Remove(string key)
{
Assert.IsTrue(_valueType == ValueTypes.OBJECT);
Assert.IsTrue(_valueType == ValueTypes.OBJECT,
$"Assertion failed: _valueType is {_valueType}, but expected ValueTypes.OBJECT."
);
_container.Remove(key);
}

public IEnumerable<Value> Values
{
get
{
Assert.IsTrue(_valueType == ValueTypes.ARRAY || _valueType == ValueTypes.OBJECT);
Assert.IsTrue(_valueType == ValueTypes.ARRAY || _valueType == ValueTypes.OBJECT,
$"Assertion failed: _valueType is {_valueType}, but expected ValueTypes.ARRAY or ValueTypes.OBJECT."
);
switch (_valueType)
{
case ValueTypes.ARRAY:
Expand All @@ -214,13 +236,17 @@ public IEnumerable<Value> Values

public bool TryGetValue(string key, out Value value)
{
Assert.IsTrue(_valueType == ValueTypes.OBJECT);
Assert.IsTrue(_valueType == ValueTypes.OBJECT,
$"Assertion failed: _valueType is {_valueType}, but expected ValueTypes.OBJECT."
);
return _container.TryGetValue(key, out value);
}

public void Merge(Value other)
{
Assert.IsTrue(_valueType == ValueTypes.ARRAY || _valueType == ValueTypes.OBJECT);
Assert.IsTrue(_valueType == ValueTypes.ARRAY || _valueType == ValueTypes.OBJECT,
$"Merge operation failed: _valueType is {_valueType}, but expected ValueTypes.ARRAY or ValueTypes.OBJECT."
);
switch (other._valueType)
{
case ValueTypes.ARRAY:
Expand All @@ -243,7 +269,9 @@ private string String
{
get
{
Assert.IsTrue(_valueType == ValueTypes.STRING && _dataType == DataTypes.PRIMITIVE);
Assert.IsTrue(_valueType == ValueTypes.STRING && _dataType == DataTypes.PRIMITIVE,
$"Assertion failed: _valueType is {_valueType}, but expected ValueTypes.STRING or ValueTypes.PRIMITIVE."
);
return _string;
}
set
Expand All @@ -258,7 +286,9 @@ private bool Bool
{
get
{
Assert.IsTrue(_valueType == ValueTypes.BOOLEAN && _dataType == DataTypes.PRIMITIVE);
Assert.IsTrue(_valueType == ValueTypes.BOOLEAN && _dataType == DataTypes.PRIMITIVE,
$"Assertion failed: _valueType is {_valueType}, but expected ValueTypes.BOOLEAN or ValueTypes.PRIMITIVE."
);
return _bool;
}
set
Expand All @@ -273,7 +303,9 @@ private double Number
{
get
{
Assert.IsTrue(_valueType == ValueTypes.NUMBER && _dataType == DataTypes.PRIMITIVE);
Assert.IsTrue(_valueType == ValueTypes.NUMBER && _dataType == DataTypes.PRIMITIVE,
$"Assertion failed: _valueType is {_valueType}, but expected ValueTypes.NUMBER or ValueTypes.PRIMITIVE."
);
return _number;
}
set
Expand All @@ -288,7 +320,9 @@ private Uri Uri
{
get
{
Assert.IsTrue(_valueType == ValueTypes.STRING && _dataType == DataTypes.URI);
Assert.IsTrue(_valueType == ValueTypes.STRING && _dataType == DataTypes.URI,
$"Assertion failed: _valueType is {_valueType}, but expected ValueTypes.STRING or ValueTypes.URI."
);
return new Uri(_string);
}
set
Expand All @@ -303,7 +337,9 @@ private Guid Guid
{
get
{
Assert.IsTrue(_valueType == ValueTypes.STRING && _dataType == DataTypes.GUID);
Assert.IsTrue(_valueType == ValueTypes.STRING && _dataType == DataTypes.GUID,
$"Assertion failed: _valueType is {_valueType}, but expected ValueTypes.STRING or ValueTypes.GUID."
);
return Guid.Parse(_string);
}
set
Expand All @@ -318,7 +354,9 @@ private DateTime DateTime
{
get
{
Assert.IsTrue(_valueType == ValueTypes.STRING && _dataType == DataTypes.DATE_TIME);
Assert.IsTrue(_valueType == ValueTypes.STRING && _dataType == DataTypes.DATE_TIME,
$"Assertion failed: _valueType is {_valueType}, but expected ValueTypes.STRING or ValueTypes.DATE_TIME."
);
return DateTime.SpecifyKind(DateTime.Parse(_string), DateTimeKind.Utc);
}
set
Expand All @@ -333,7 +371,9 @@ private DateTimeOffset DateTimeOffset
{
get
{
Assert.IsTrue(_valueType == ValueTypes.STRING && _dataType == DataTypes.DATE_TIME_OFFSET);
Assert.IsTrue(_valueType == ValueTypes.STRING && _dataType == DataTypes.DATE_TIME_OFFSET,
$"Assertion failed: _valueType is {_valueType}, but expected ValueTypes.STRING or ValueTypes.DATE_TIME_OFFSET."
);
return DateTimeOffset.Parse(_string);
}
set
Expand All @@ -348,7 +388,9 @@ private TimeSpan TimeSpan
{
get
{
Assert.IsTrue(_valueType == ValueTypes.OBJECT && _dataType == DataTypes.TIME_SPAN);
Assert.IsTrue(_valueType == ValueTypes.OBJECT && _dataType == DataTypes.TIME_SPAN,
$"Assertion failed: _valueType is {_valueType}, but expected ValueTypes.OBJECT or ValueTypes.TIME_SPAN."
);
return new TimeSpan((long)_number);
}
set
Expand All @@ -363,7 +405,9 @@ private Color Color
{
get
{
Assert.IsTrue(_valueType == ValueTypes.OBJECT && _dataType == DataTypes.COLOR);
Assert.IsTrue(_valueType == ValueTypes.OBJECT && _dataType == DataTypes.COLOR,
$"Assertion failed: _valueType is {_valueType}, but expected ValueTypes.OBJECT or ValueTypes.COLOR."
);
return new Color(this["r"], this["g"], this["b"], this["a"]);
}
set
Expand All @@ -378,7 +422,9 @@ private Color32 Color32
{
get
{
Assert.IsTrue(_valueType == ValueTypes.OBJECT && _dataType == DataTypes.COLOR);
Assert.IsTrue(_valueType == ValueTypes.OBJECT && _dataType == DataTypes.COLOR,
$"Assertion failed: _valueType is {_valueType}, but expected ValueTypes.OBJECT or ValueTypes.COLOR."
);
return new Color(this["r"], this["g"], this["b"], this["a"]);
}
set
Expand All @@ -393,7 +439,9 @@ private Vector2 Vector2
{
get
{
Assert.IsTrue(_valueType == ValueTypes.OBJECT && _dataType == DataTypes.VECTOR);
Assert.IsTrue(_valueType == ValueTypes.OBJECT && _dataType == DataTypes.VECTOR,
$"Assertion failed: _valueType is {_valueType}, but expected ValueTypes.OBJECT or ValueTypes.VECTOR."
);
return new Vector2(this["x"], this["y"]);
}
set
Expand All @@ -408,7 +456,9 @@ private Vector3 Vector3
{
get
{
Assert.IsTrue(_valueType == ValueTypes.OBJECT && _dataType == DataTypes.VECTOR);
Assert.IsTrue(_valueType == ValueTypes.OBJECT && _dataType == DataTypes.VECTOR,
$"Assertion failed: _valueType is {_valueType}, but expected ValueTypes.OBJECT or ValueTypes.VECTOR."
);
return new Vector3(this["x"], this["y"], this["z"]);
}
set
Expand All @@ -423,7 +473,9 @@ private Vector4 Vector4
{
get
{
Assert.IsTrue(_valueType == ValueTypes.OBJECT && (_dataType == DataTypes.VECTOR || _dataType == DataTypes.QUATERNION));
Assert.IsTrue(_valueType == ValueTypes.OBJECT && (_dataType == DataTypes.VECTOR || _dataType == DataTypes.QUATERNION),
$"Assertion failed: _valueType is {_valueType}, but expected ValueTypes.OBJECT, ValueTypes.VECTOR or ValueTypes.QUATERNION."
);
return new Vector4(this["x"], this["y"], this["z"], this["w"]);
}
set
Expand All @@ -438,7 +490,9 @@ private Quaternion Quaternion
{
get
{
Assert.IsTrue(_valueType == ValueTypes.OBJECT && (_dataType == DataTypes.VECTOR || _dataType == DataTypes.QUATERNION));
Assert.IsTrue(_valueType == ValueTypes.OBJECT && (_dataType == DataTypes.VECTOR || _dataType == DataTypes.QUATERNION),
$"Assertion failed: _valueType is {_valueType}, but expected ValueTypes.OBJECT, ValueTypes.VECTOR or ValueTypes.QUATERNION."
);
return new Quaternion(this["x"], this["y"], this["z"], this["w"]);
}
set
Expand All @@ -453,7 +507,9 @@ private Bounds Bounds
{
get
{
Assert.IsTrue(_valueType == ValueTypes.OBJECT && _dataType == DataTypes.BOUNDS);
Assert.IsTrue(_valueType == ValueTypes.OBJECT && _dataType == DataTypes.BOUNDS,
$"Assertion failed: _valueType is {_valueType}, but expected ValueTypes.OBJECT or ValueTypes.BOUNDS."
);
return new Bounds(this["center"], this["size"]);
}
set
Expand All @@ -468,7 +524,9 @@ private Rect Rect
{
get
{
Assert.IsTrue(_valueType == ValueTypes.OBJECT && _dataType == DataTypes.RECT);
Assert.IsTrue(_valueType == ValueTypes.OBJECT && _dataType == DataTypes.RECT,
$"Assertion failed: _valueType is {_valueType}, but expected ValueTypes.OBJECT or ValueTypes.RECT."
);
return new Rect(this["x"], this["y"], this["width"], this["height"]);
}
set
Expand Down

0 comments on commit c761af5

Please sign in to comment.