|
38 | 38 | from pyVHDLModel import Design, Library, Document |
39 | 39 | from pyVHDLModel.Base import Direction, Range |
40 | 40 | from pyVHDLModel.Name import SelectedName, SimpleName, AllName, AttributeName |
41 | | -from pyVHDLModel.Symbol import LibraryReferenceSymbol, PackageReferenceSymbol, PackageMembersReferenceSymbol |
| 41 | +from pyVHDLModel.Object import Constant, Signal |
| 42 | +from pyVHDLModel.Symbol import LibraryReferenceSymbol, PackageReferenceSymbol, PackageMembersReferenceSymbol, SimpleSubtypeSymbol |
42 | 43 | from pyVHDLModel.Symbol import AllPackageMembersReferenceSymbol, ContextReferenceSymbol, EntitySymbol |
43 | 44 | from pyVHDLModel.Symbol import ArchitectureSymbol, PackageSymbol, EntityInstantiationSymbol |
44 | 45 | from pyVHDLModel.Symbol import ComponentInstantiationSymbol, ConfigurationInstantiationSymbol |
@@ -171,45 +172,171 @@ def test_PackageReferenceSymbol(self): |
171 | 172 | self.assertEqual("Package: 'liB.pacK'", str(symbol)) |
172 | 173 |
|
173 | 174 | def test_PackageMembersReferenceSymbol(self): |
174 | | - symbol = PackageMembersReferenceSymbol(SelectedName("obj", SelectedName("pack", SimpleName("Lib")))) |
| 175 | + name = SelectedName("Obj", SelectedName("Pack", SimpleName("Lib"))) |
| 176 | + symbol = PackageMembersReferenceSymbol(name) |
175 | 177 |
|
176 | | - self.assertEqual("obj", symbol.Name.NormalizedIdentifier) |
177 | | - self.assertEqual("pack", symbol.Name.Prefix.NormalizedIdentifier) |
178 | | - self.assertEqual("lib", symbol.Name.Prefix.Prefix.NormalizedIdentifier) |
| 178 | + self.assertIs(name, symbol.Name) |
| 179 | + self.assertFalse(symbol.IsResolved) |
| 180 | + self.assertIsNone(symbol.Reference) |
| 181 | + self.assertIsNone(symbol.Member) |
| 182 | + self.assertEqual("PackageMembersReferenceSymbol: 'Lib.Pack.Obj' -> unresolved", repr(symbol)) |
| 183 | + self.assertEqual("Lib.Pack.Obj?", str(symbol)) |
| 184 | + |
| 185 | + library = Library("liB") |
| 186 | + package = Package("pacK") |
| 187 | + package.Library = library |
| 188 | + constant = Constant(("obJ", ), SimpleSubtypeSymbol(SimpleName("Bool"))) |
| 189 | + for id in constant.Identifiers: |
| 190 | + package.DeclaredItems.append(constant) |
| 191 | + package.Constants[id] = constant |
| 192 | + |
| 193 | + symbol.Member = constant |
| 194 | + |
| 195 | + self.assertTrue(symbol.IsResolved) |
| 196 | + self.assertIs(constant, symbol.Member) |
| 197 | + # self.assertEqual("PackageReferenceSymbol: 'Lib.Pack' -> Package: 'liB.pacK'", repr(symbol)) |
| 198 | + # self.assertEqual("Constant: 'liB.pacK.obJ'", str(symbol)) |
179 | 199 |
|
180 | 200 | def test_AllPackageMembersReferenceSymbol(self): |
181 | | - symbol = AllPackageMembersReferenceSymbol(AllName(SelectedName("pack", SimpleName("Lib")))) |
| 201 | + name = AllName(SelectedName("Pack", SimpleName("Lib"))) |
| 202 | + symbol = AllPackageMembersReferenceSymbol(name) |
| 203 | + |
| 204 | + self.assertIs(name, symbol.Name) |
| 205 | + self.assertFalse(symbol.IsResolved) |
| 206 | + self.assertIsNone(symbol.Reference) |
| 207 | + self.assertIsNone(symbol.Members) |
| 208 | + self.assertEqual("AllPackageMembersReferenceSymbol: 'Lib.Pack.all' -> unresolved", repr(symbol)) |
| 209 | + self.assertEqual("Lib.Pack.all?", str(symbol)) |
| 210 | + |
| 211 | + library = Library("liB") |
| 212 | + package = Package("pacK") |
| 213 | + package.Library = library |
| 214 | + constant = Constant(("obJ", ), SimpleSubtypeSymbol(SimpleName("Bool"))) |
| 215 | + signal = Signal(("siG", ), SimpleSubtypeSymbol(SimpleName("Bit"))) |
| 216 | + for id in constant.Identifiers: |
| 217 | + package.DeclaredItems.append(constant) |
| 218 | + package.Constants[id] = constant |
| 219 | + for id in signal.Identifiers: |
| 220 | + package.DeclaredItems.append(signal) |
| 221 | + package.Objects[id] = signal |
182 | 222 |
|
183 | | - self.assertEqual("all", symbol.Name.NormalizedIdentifier) |
184 | | - self.assertEqual("pack", symbol.Name.Prefix.NormalizedIdentifier) |
185 | | - self.assertEqual("lib", symbol.Name.Prefix.Prefix.NormalizedIdentifier) |
| 223 | + symbol.Members = (constant, signal) |
| 224 | + |
| 225 | + self.assertTrue(symbol.IsResolved) |
| 226 | + self.assertTupleEqual((constant, signal), symbol.Members) |
| 227 | + # self.assertEqual("PackageReferenceSymbol: 'Lib.Pack' -> Package: 'liB.pacK'", repr(symbol)) |
| 228 | + # self.assertEqual("Constant: 'liB.pacK.obJ'", str(symbol)) |
186 | 229 |
|
187 | 230 | def test_ContextReferenceSymbol(self): |
188 | | - symbol = ContextReferenceSymbol(SelectedName("ctx", SimpleName("Lib"))) |
| 231 | + name = SelectedName("Ctx", SimpleName("Lib")) |
| 232 | + symbol = ContextReferenceSymbol(name) |
| 233 | + |
| 234 | + self.assertIs(name, symbol.Name) |
| 235 | + self.assertFalse(symbol.IsResolved) |
| 236 | + self.assertIsNone(symbol.Reference) |
| 237 | + self.assertIsNone(symbol.Context) |
| 238 | + self.assertEqual("ContextReferenceSymbol: 'Lib.Ctx' -> unresolved", repr(symbol)) |
| 239 | + self.assertEqual("Lib.Ctx?", str(symbol)) |
189 | 240 |
|
190 | | - self.assertEqual("ctx", symbol.Name.NormalizedIdentifier) |
191 | | - self.assertEqual("lib", symbol.Name.Prefix.NormalizedIdentifier) |
| 241 | + library = Library("liB") |
| 242 | + context = Context("ctX") |
| 243 | + context.Library = library |
| 244 | + symbol.Context = context |
| 245 | + |
| 246 | + self.assertTrue(symbol.IsResolved) |
| 247 | + self.assertIs(context, symbol.Context) |
| 248 | + # self.assertEqual("PackageReferenceSymbol: 'Lib.Pack' -> Package: 'liB.pacK'", repr(symbol)) |
| 249 | + # self.assertEqual("Package: 'liB.pacK'", str(symbol)) |
| 250 | + |
| 251 | + def test_SimpleEntitySymbol(self): |
| 252 | + name = SimpleName("Ent") |
| 253 | + symbol = EntitySymbol(name) |
192 | 254 |
|
193 | | - def test_EntitySymbol(self): |
194 | | - symbol = EntitySymbol(SimpleName("ent")) |
| 255 | + self.assertIs(name, symbol.Name) |
| 256 | + self.assertFalse(symbol.IsResolved) |
| 257 | + self.assertIsNone(symbol.Reference) |
| 258 | + self.assertIsNone(symbol.Entity) |
| 259 | + self.assertEqual("EntitySymbol: 'Ent' -> unresolved", repr(symbol)) |
| 260 | + self.assertEqual("Ent?", str(symbol)) |
195 | 261 |
|
196 | | - self.assertEqual("ent", symbol.Name.NormalizedIdentifier) |
| 262 | + library = Library("liB") |
| 263 | + entity = Entity("enT") |
| 264 | + entity.Library = library |
| 265 | + symbol.Entity = entity |
| 266 | + |
| 267 | + self.assertTrue(symbol.IsResolved) |
| 268 | + self.assertIs(entity, symbol.Entity) |
| 269 | + # self.assertEqual("PackageReferenceSymbol: 'Lib.Pack' -> Package: 'liB.pacK'", repr(symbol)) |
| 270 | + # self.assertEqual("Package: 'liB.pacK'", str(symbol)) |
| 271 | + |
| 272 | + def test_SelectedEntitySymbol(self): |
| 273 | + name = SelectedName("Ent", SimpleName("Work")) |
| 274 | + symbol = EntitySymbol(name) |
| 275 | + |
| 276 | + self.assertIs(name, symbol.Name) |
| 277 | + self.assertFalse(symbol.IsResolved) |
| 278 | + self.assertIsNone(symbol.Reference) |
| 279 | + self.assertIsNone(symbol.Entity) |
| 280 | + self.assertEqual("EntitySymbol: 'Work.Ent' -> unresolved", repr(symbol)) |
| 281 | + self.assertEqual("Work.Ent?", str(symbol)) |
| 282 | + |
| 283 | + library = Library("liB") |
| 284 | + entity = Entity("enT") |
| 285 | + entity.Library = library |
| 286 | + symbol.Entity = entity |
| 287 | + |
| 288 | + self.assertTrue(symbol.IsResolved) |
| 289 | + self.assertIs(entity, symbol.Entity) |
| 290 | + # self.assertEqual("PackageReferenceSymbol: 'Lib.Pack' -> Package: 'liB.pacK'", repr(symbol)) |
| 291 | + # self.assertEqual("Package: 'liB.pacK'", str(symbol)) |
197 | 292 |
|
198 | 293 | # def test_ArchitectureSymbol(self): |
199 | 294 | # symbol = ArchitectureSymbol("rtl") |
200 | 295 | # |
201 | 296 | # self.assertEqual("rtl", symbol.NormalizedIdentifier) |
202 | 297 |
|
| 298 | + # TODO: doe packages also support simple and selected names. |
203 | 299 | def test_PackageSymbol(self): |
204 | | - symbol = PackageSymbol(SimpleName("pack")) |
| 300 | + name = SimpleName("Pack") |
| 301 | + symbol = PackageSymbol(name) |
205 | 302 |
|
206 | | - self.assertEqual("pack", symbol.Name.NormalizedIdentifier) |
| 303 | + self.assertIs(name, symbol.Name) |
| 304 | + self.assertFalse(symbol.IsResolved) |
| 305 | + self.assertIsNone(symbol.Reference) |
| 306 | + self.assertIsNone(symbol.Package) |
| 307 | + self.assertEqual("PackageSymbol: 'Pack' -> unresolved", repr(symbol)) |
| 308 | + self.assertEqual("Pack?", str(symbol)) |
| 309 | + |
| 310 | + library = Library("liB") |
| 311 | + package = Package("pacK") |
| 312 | + package.Library = library |
| 313 | + symbol.Package = package |
| 314 | + |
| 315 | + self.assertTrue(symbol.IsResolved) |
| 316 | + self.assertIs(package, symbol.Package) |
| 317 | + self.assertEqual("PackageSymbol: 'Pack' -> Package: 'liB.pacK'", repr(symbol)) |
| 318 | + self.assertEqual("Package: 'liB.pacK'", str(symbol)) |
207 | 319 |
|
208 | 320 | def test_EntityInstantiationSymbol(self): |
209 | | - symbol = EntityInstantiationSymbol(SelectedName("ent", SimpleName("Lib"))) |
| 321 | + name = SelectedName("Ent", SimpleName("Lib")) |
| 322 | + symbol = EntityInstantiationSymbol(name) |
210 | 323 |
|
211 | | - self.assertEqual("ent", symbol.Name.NormalizedIdentifier) |
212 | | - self.assertEqual("lib", symbol.Name.Prefix.NormalizedIdentifier) |
| 324 | + self.assertIs(name, symbol.Name) |
| 325 | + self.assertFalse(symbol.IsResolved) |
| 326 | + self.assertIsNone(symbol.Reference) |
| 327 | + self.assertIsNone(symbol.Entity) |
| 328 | + self.assertEqual("EntityInstantiationSymbol: 'Lib.Ent' -> unresolved", repr(symbol)) |
| 329 | + self.assertEqual("Lib.Ent?", str(symbol)) |
| 330 | + |
| 331 | + library = Library("liB") |
| 332 | + entity = Entity("enT") |
| 333 | + entity.Library = library |
| 334 | + symbol.Entity = entity |
| 335 | + |
| 336 | + self.assertTrue(symbol.IsResolved) |
| 337 | + self.assertIs(entity, symbol.Entity) |
| 338 | + self.assertEqual("EntityInstantiationSymbol: 'Lib.Ent' -> Entity: 'liB.enT(%)'", repr(symbol)) |
| 339 | + self.assertEqual("Entity: 'liB.enT(%)'", str(symbol)) |
213 | 340 |
|
214 | 341 | def test_ComponentInstantiationSymbol(self): |
215 | 342 | symbol = ComponentInstantiationSymbol(SimpleName("comp")) |
|
0 commit comments