cohit's picture
Upload folder using huggingface_hub
0827183 verified
import aiounittest
from botbuilder.dialogs import ObjectPath
class Location:
def __init__(self, lat: float = None, long: float = None):
self.lat = lat
self.long = long
class Options:
def __init__(
self,
first_name: str = None,
last_name: str = None,
age: int = None,
boolean: bool = None,
dictionary: dict = None,
location: Location = None,
):
self.first_name = first_name
self.last_name = last_name
self.age = age
self.boolean = boolean
self.dictionary = dictionary
self.location = location
class ObjectPathTests(aiounittest.AsyncTestCase):
async def test_typed_only_default(self):
default_options = Options(
last_name="Smith",
first_name="Fred",
age=22,
location=Location(
lat=1.2312312,
long=3.234234,
),
)
overlay = Options()
result = ObjectPath.assign(default_options, overlay)
assert result.last_name == default_options.last_name
assert result.first_name == default_options.first_name
assert result.age == default_options.age
assert result.boolean == default_options.boolean
assert result.location.lat == default_options.location.lat
assert result.location.long == default_options.location.long
async def test_typed_only_overlay(self):
default_options = Options()
overlay = Options(
last_name="Smith",
first_name="Fred",
age=22,
location=Location(
lat=1.2312312,
long=3.234234,
),
)
result = ObjectPath.assign(default_options, overlay)
assert result.last_name == overlay.last_name
assert result.first_name == overlay.first_name
assert result.age == overlay.age
assert result.boolean == overlay.boolean
assert result.location.lat == overlay.location.lat
assert result.location.long == overlay.location.long
async def test_typed_full_overlay(self):
default_options = Options(
last_name="Smith",
first_name="Fred",
age=22,
location=Location(
lat=1.2312312,
long=3.234234,
),
dictionary={"one": 1, "two": 2},
)
overlay = Options(
last_name="Grant",
first_name="Eddit",
age=32,
location=Location(
lat=2.2312312,
long=2.234234,
),
dictionary={"one": 99, "three": 3},
)
result = ObjectPath.assign(default_options, overlay)
assert result.last_name == overlay.last_name
assert result.first_name == overlay.first_name
assert result.age == overlay.age
assert result.boolean == overlay.boolean
assert result.location.lat == overlay.location.lat
assert result.location.long == overlay.location.long
assert "one" in result.dictionary
assert result.dictionary["one"] == 99
assert "two" in result.dictionary
assert "three" in result.dictionary
async def test_typed_partial_overlay(self):
default_options = Options(
last_name="Smith",
first_name="Fred",
age=22,
location=Location(
lat=1.2312312,
long=3.234234,
),
)
overlay = Options(
last_name="Grant",
)
result = ObjectPath.assign(default_options, overlay)
assert result.last_name == overlay.last_name
assert result.first_name == default_options.first_name
assert result.age == default_options.age
assert result.boolean == default_options.boolean
assert result.location.lat == default_options.location.lat
assert result.location.long == default_options.location.long
async def test_typed_no_target(self):
overlay = Options(
last_name="Smith",
first_name="Fred",
age=22,
location=Location(
lat=1.2312312,
long=3.234234,
),
)
result = ObjectPath.assign(None, overlay)
assert result.last_name == overlay.last_name
assert result.first_name == overlay.first_name
assert result.age == overlay.age
assert result.boolean == overlay.boolean
assert result.location.lat == overlay.location.lat
assert result.location.long == overlay.location.long
async def test_typed_no_overlay(self):
default_options = Options(
last_name="Smith",
first_name="Fred",
age=22,
location=Location(
lat=1.2312312,
long=3.234234,
),
)
result = ObjectPath.assign(default_options, None)
assert result.last_name == default_options.last_name
assert result.first_name == default_options.first_name
assert result.age == default_options.age
assert result.boolean == default_options.boolean
assert result.location.lat == default_options.location.lat
assert result.location.long == default_options.location.long
async def test_no_target_or_overlay(self):
result = ObjectPath.assign(None, None, Options)
assert result
async def test_dict_partial_overlay(self):
default_options = {
"last_name": "Smith",
"first_name": "Fred",
"age": 22,
"location": Location(
lat=1.2312312,
long=3.234234,
),
}
overlay = {
"last_name": "Grant",
}
result = ObjectPath.assign(default_options, overlay)
assert result["last_name"] == overlay["last_name"]
assert result["first_name"] == default_options["first_name"]
assert result["age"] == default_options["age"]
assert result["location"].lat == default_options["location"].lat
assert result["location"].long == default_options["location"].long
async def test_dict_to_typed_overlay(self):
default_options = Options(
last_name="Smith",
first_name="Fred",
age=22,
location=Location(
lat=1.2312312,
long=3.234234,
),
)
overlay = {
"last_name": "Grant",
}
result = ObjectPath.assign(default_options, overlay)
assert result.last_name == overlay["last_name"]
assert result.first_name == default_options.first_name
assert result.age == default_options.age
assert result.boolean == default_options.boolean
assert result.location.lat == default_options.location.lat
assert result.location.long == default_options.location.long
async def test_set_value(self):
test = {}
ObjectPath.set_path_value(test, "x.y.z", 15)
ObjectPath.set_path_value(test, "x.p", "hello")
ObjectPath.set_path_value(test, "foo", {"Bar": 15, "Blat": "yo"})
ObjectPath.set_path_value(test, "x.a[1]", "yabba")
ObjectPath.set_path_value(test, "x.a[0]", "dabba")
ObjectPath.set_path_value(test, "null", None)
assert ObjectPath.get_path_value(test, "x.y.z") == 15
assert ObjectPath.get_path_value(test, "x.p") == "hello"
assert ObjectPath.get_path_value(test, "foo.bar") == 15
assert not ObjectPath.try_get_path_value(test, "foo.Blatxxx")
assert ObjectPath.try_get_path_value(test, "x.a[1]") == "yabba"
assert ObjectPath.try_get_path_value(test, "x.a[0]") == "dabba"
assert not ObjectPath.try_get_path_value(test, "null")
async def test_remove_path_value(self):
test = {}
ObjectPath.set_path_value(test, "x.y.z", 15)
ObjectPath.set_path_value(test, "x.p", "hello")
ObjectPath.set_path_value(test, "foo", {"Bar": 15, "Blat": "yo"})
ObjectPath.set_path_value(test, "x.a[1]", "yabba")
ObjectPath.set_path_value(test, "x.a[0]", "dabba")
ObjectPath.remove_path_value(test, "x.y.z")
with self.assertRaises(KeyError):
ObjectPath.get_path_value(test, "x.y.z")
assert ObjectPath.get_path_value(test, "x.y.z", 99) == 99
ObjectPath.remove_path_value(test, "x.a[1]")
assert not ObjectPath.try_get_path_value(test, "x.a[1]")
assert ObjectPath.try_get_path_value(test, "x.a[0]") == "dabba"