graph/encoding/dot: (un)quote attributes if needed during (un)marshal

This commit is contained in:
Robin Eklind
2019-01-14 04:57:56 +01:00
committed by Dan Kortschak
parent 9b1d387736
commit 24f0d081ca
5 changed files with 288 additions and 74 deletions

View File

@@ -34,33 +34,33 @@ var decodeTests = []struct {
},
wantDOT: `strict digraph {
// Node definitions.
0x8a10d5a2611fd03f [name="Richard Marquand"];
0xa3cff1a4c3ef3bb6 [
"0x8a10d5a2611fd03f" [name="Richard Marquand"];
"0xa3cff1a4c3ef3bb6" [
name="Star Wars: Episode V - The Empire Strikes Back"
release_date=1980-05-21T00:00:00Z
release_date="1980-05-21T00:00:00Z"
revenue=534000000
running_time=124
];
0xb39aa14d66aedad5 [
"0xb39aa14d66aedad5" [
name="Star Wars: Episode VI - Return of the Jedi"
release_date=1983-05-25T00:00:00Z
release_date="1983-05-25T00:00:00Z"
revenue=572000000
running_time=131
];
0x0312de17a7ee89f9 [name="Luke Skywalker"];
0x3da8d1dcab1bb381 [name="Han Solo"];
0x4a7d0b5fe91e78a4 [name="Irvin Kernshner"];
0x718337b9dcbaa7d9 [name="Princess Leia"];
"0x0312de17a7ee89f9" [name="Luke Skywalker"];
"0x3da8d1dcab1bb381" [name="Han Solo"];
"0x4a7d0b5fe91e78a4" [name="Irvin Kernshner"];
"0x718337b9dcbaa7d9" [name="Princess Leia"];
// Edge definitions.
0xa3cff1a4c3ef3bb6 -> 0x0312de17a7ee89f9 [label=starring];
0xa3cff1a4c3ef3bb6 -> 0x3da8d1dcab1bb381 [label=starring];
0xa3cff1a4c3ef3bb6 -> 0x4a7d0b5fe91e78a4 [label=director];
0xa3cff1a4c3ef3bb6 -> 0x718337b9dcbaa7d9 [label=starring];
0xb39aa14d66aedad5 -> 0x8a10d5a2611fd03f [label=director];
0xb39aa14d66aedad5 -> 0x0312de17a7ee89f9 [label=starring];
0xb39aa14d66aedad5 -> 0x3da8d1dcab1bb381 [label=starring];
0xb39aa14d66aedad5 -> 0x718337b9dcbaa7d9 [label=starring];
"0xa3cff1a4c3ef3bb6" -> "0x0312de17a7ee89f9" [label=starring];
"0xa3cff1a4c3ef3bb6" -> "0x3da8d1dcab1bb381" [label=starring];
"0xa3cff1a4c3ef3bb6" -> "0x4a7d0b5fe91e78a4" [label=director];
"0xa3cff1a4c3ef3bb6" -> "0x718337b9dcbaa7d9" [label=starring];
"0xb39aa14d66aedad5" -> "0x8a10d5a2611fd03f" [label=director];
"0xb39aa14d66aedad5" -> "0x0312de17a7ee89f9" [label=starring];
"0xb39aa14d66aedad5" -> "0x3da8d1dcab1bb381" [label=starring];
"0xb39aa14d66aedad5" -> "0x718337b9dcbaa7d9" [label=starring];
}`,
},
{
@@ -72,52 +72,52 @@ var decodeTests = []struct {
},
wantDOT: `strict digraph {
// Node definitions.
0x892a6da7ee1fbdec [
"0x892a6da7ee1fbdec" [
age=55
name=Sarah
];
0x99b74c1b5ab100ec [
"0x99b74c1b5ab100ec" [
age=35
name=Artyom
];
0xb9e12a67e34d6acc [
"0xb9e12a67e34d6acc" [
age=19
name=Catalina
];
0xbf104824c777525d [name=Perro];
0xf590a923ea1fccaa [name=Goldie];
0xf92d7dbe272d680b [name="Hyung Sin"];
0x0fd90205a458151f [
"0xbf104824c777525d" [name=Perro];
"0xf590a923ea1fccaa" [name=Goldie];
"0xf92d7dbe272d680b" [name="Hyung Sin"];
"0x0fd90205a458151f" [
age=39
name=Michael
];
0x37734fcf0a6fcc69 [name="Rammy the sheep"];
0x52a80955d40ec819 [
"0x37734fcf0a6fcc69" [name="Rammy the sheep"];
"0x52a80955d40ec819" [
age=35
name=Amit
];
0x5e9ad1cd9466228c [
"0x5e9ad1cd9466228c" [
age=24
name="Sang Hyun"
];
// Edge definitions.
0xb9e12a67e34d6acc -> 0xbf104824c777525d [label=owns_pet];
0xb9e12a67e34d6acc -> 0x5e9ad1cd9466228c [label=friend];
0xf92d7dbe272d680b -> 0x5e9ad1cd9466228c [label=friend];
0x0fd90205a458151f -> 0x892a6da7ee1fbdec [label=friend];
0x0fd90205a458151f -> 0x99b74c1b5ab100ec [label=friend];
0x0fd90205a458151f -> 0xb9e12a67e34d6acc [label=friend];
0x0fd90205a458151f -> 0x37734fcf0a6fcc69 [label=owns_pet];
0x0fd90205a458151f -> 0x52a80955d40ec819 [label=friend];
0x0fd90205a458151f -> 0x5e9ad1cd9466228c [label=friend];
0x52a80955d40ec819 -> 0x99b74c1b5ab100ec [label=friend];
0x52a80955d40ec819 -> 0x0fd90205a458151f [label=friend];
0x52a80955d40ec819 -> 0x5e9ad1cd9466228c [label=friend];
0x5e9ad1cd9466228c -> 0xb9e12a67e34d6acc [label=friend];
0x5e9ad1cd9466228c -> 0xf590a923ea1fccaa [label=owns_pet];
0x5e9ad1cd9466228c -> 0xf92d7dbe272d680b [label=friend];
0x5e9ad1cd9466228c -> 0x52a80955d40ec819 [label=friend];
"0xb9e12a67e34d6acc" -> "0xbf104824c777525d" [label=owns_pet];
"0xb9e12a67e34d6acc" -> "0x5e9ad1cd9466228c" [label=friend];
"0xf92d7dbe272d680b" -> "0x5e9ad1cd9466228c" [label=friend];
"0x0fd90205a458151f" -> "0x892a6da7ee1fbdec" [label=friend];
"0x0fd90205a458151f" -> "0x99b74c1b5ab100ec" [label=friend];
"0x0fd90205a458151f" -> "0xb9e12a67e34d6acc" [label=friend];
"0x0fd90205a458151f" -> "0x37734fcf0a6fcc69" [label=owns_pet];
"0x0fd90205a458151f" -> "0x52a80955d40ec819" [label=friend];
"0x0fd90205a458151f" -> "0x5e9ad1cd9466228c" [label=friend];
"0x52a80955d40ec819" -> "0x99b74c1b5ab100ec" [label=friend];
"0x52a80955d40ec819" -> "0x0fd90205a458151f" [label=friend];
"0x52a80955d40ec819" -> "0x5e9ad1cd9466228c" [label=friend];
"0x5e9ad1cd9466228c" -> "0xb9e12a67e34d6acc" [label=friend];
"0x5e9ad1cd9466228c" -> "0xf590a923ea1fccaa" [label=owns_pet];
"0x5e9ad1cd9466228c" -> "0xf92d7dbe272d680b" [label=friend];
"0x5e9ad1cd9466228c" -> "0x52a80955d40ec819" [label=friend];
}`,
},
{