Title: Make UtEnumConstModel and UtClassRefModel reference models #414 by dtim · Pull Request #611 · UnitTestBot/UTBotJava · GitHub
Open Graph Title: Make UtEnumConstModel and UtClassRefModel reference models #414 by dtim · Pull Request #611 · UnitTestBot/UTBotJava
X Title: Make UtEnumConstModel and UtClassRefModel reference models #414 by dtim · Pull Request #611 · UnitTestBot/UTBotJava
Description: Description Historically UtEnumConstModel and UtClassRefModel have been processed not as other reference models, but in a special way, more like to primitive types. This approach leads to several problems, especially to class cast errors when processing generic collections with enums or class references as elements. This commit makes UtEnumConstModel and UtClassRefModel subtypes of UtReferenceModel. Concrete executor is modified to respect the identity of static fields to avoid rewriting enum values and Class> instances. Special processing for enums is implemented. When a new enum value is created, or an Object is being cast to the enum type, static values for the enum class are initialized, and the set of hard constraint is added to require that the new instance has the same address and ordinal as any one of enum constants to implement reference equality for enums. Corresponding changes in fuzzer model providers have been implemented. Limitations (probably have been there for a long time, addressed separately): anonymous nested classes associated with enum values are not fully supported yet: #617 (maybe a codegen limitation); enum constants are explicitly assigned to corresponding static fields in generated tests: #618 (it seems to be a particular case of our general approach to static field initialization); instances of enum classes are (unsuccessfully) generated via reflection by the concrete executor: #619. Fixes #414 (meta-issue) Fixes #230 Fixes #300 Type of Change Breaking change (fix or feature that would cause existing functionality to not work as expected) How Has This Been Tested? Automated Testing All existing unit tests should pass. New unit tests for enums have been added: org.utbot.examples.enums.ComplexEnumExamplesTest Note: the test org.utbot.examples.enums.ComplexEnumExamplesTest#testFindState is currently disabled because of limited anonymous classes support. Manual Scenario To check that #230 is fixed: generate the test suite for the code example in issue #230 description. Test should be generated, no exceptions should be thrown. To check that #300 is fixed: run the contest estimator with settings from issue #300 description. Generated file should compile, class name should be present in qualified enum constant names. Checklist: This is the author self-check list The change followed the style guidelines of the UTBot project Self-review of the code is passed The change contains enough commentaries, particularly in hard-to-understand areas New documentation is provided or existed one is altered No new warnings New tests have been added All tests pass locally with my changes
Open Graph Description: Description Historically UtEnumConstModel and UtClassRefModel have been processed not as other reference models, but in a special way, more like to primitive types. This approach leads to several p...
X Description: Description Historically UtEnumConstModel and UtClassRefModel have been processed not as other reference models, but in a special way, more like to primitive types. This approach leads to several p...
Opengraph URL: https://github.com/UnitTestBot/UTBotJava/pull/611
X: @github
Domain: github.com
| route-pattern | /:user_id/:repository/pull/:id/checks(.:format) |
| route-controller | pull_requests |
| route-action | checks |
| fetch-nonce | v2:e9336352-07b1-13ef-85cb-9d44c4289295 |
| current-catalog-service-hash | 87dc3bc62d9b466312751bfd5f889726f4f1337bdff4e8be7da7c93d6c00a25a |
| request-id | 931A:1832D9:92E99:BCD52:6990CCDE |
| html-safe-nonce | 09669b4e147818371625ab7bc9c212393de705eb931e28811bd45d6ea7383441 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5MzFBOjE4MzJEOTo5MkU5OTpCQ0Q1Mjo2OTkwQ0NERSIsInZpc2l0b3JfaWQiOiI3ODgwMTU1NTAxMDk0MjkyNzAyIiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | a2a2b51293f4262deb0754b7725da155d20e7feb52b7cd06cbe00a0ebaac2d66 |
| hovercard-subject-tag | pull_request:1012003153 |
| github-keyboard-shortcuts | repository,pull-request-list,pull-request-conversation,pull-request-files-changed,checks,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/UnitTestBot/UTBotJava/pull/611/checks |
| twitter:image | https://avatars.githubusercontent.com/u/336793?s=400&v=4 |
| twitter:card | summary_large_image |
| og:image | https://avatars.githubusercontent.com/u/336793?s=400&v=4 |
| og:image:alt | Description Historically UtEnumConstModel and UtClassRefModel have been processed not as other reference models, but in a special way, more like to primitive types. This approach leads to several p... |
| og:site_name | GitHub |
| og:type | object |
| hostname | github.com |
| expected-hostname | github.com |
| None | 42c603b9d642c4a9065a51770f75e5e27132fef0e858607f5c9cb7e422831a7b |
| turbo-cache-control | no-preview |
| go-import | github.com/UnitTestBot/UTBotJava git https://github.com/UnitTestBot/UTBotJava.git |
| octolytics-dimension-user_id | 87413538 |
| octolytics-dimension-user_login | UnitTestBot |
| octolytics-dimension-repository_id | 480810501 |
| octolytics-dimension-repository_nwo | UnitTestBot/UTBotJava |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 480810501 |
| octolytics-dimension-repository_network_root_nwo | UnitTestBot/UTBotJava |
| turbo-body-classes | logged-out env-production page-responsive full-width full-width-p-0 |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 848bc6032dcc93a9a7301dcc3f379a72ba13b96e |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width